Timer und TimerTask Klassen ????



  • Hallo zusammen.

    Ich stehe gerade vor einem Problem wo die Application in gewissen Zeitabständen in einem Verzeichnis schauen soll ob sich die Dateien ändern(Datum).

    Das alles ist ja auch kein Problem. Nun habe ich die Order bekommen das die Application(Server Application mit Tomcat) egal wann man sie startet immer um 6 Uhr Morgen nachschauen soll ob es eine änderung gibt.

    Wenn ich das ganze mit Threads mache dann kann ich nur die Zeit beeinflussen wie lange der Thread starten soll. Das heisst wird die Application einmal gestoppt und dann wieder gestartet dann stimmt die Uhrzeit nicht mehr wann geprüft wird.

    Jetzt habe ich 2 Klassen gefunden die mir vieleicht helfen könnten, nur schaffe ich es dort auch nicht fest zulegen das immer um 6 Uhr Morgens das Thread abgearbeitet wird.

    Falls ihr ideen habt immer her damit.

    Danke bye



  • Ich würde als Grundidee einen Watchdog vorschlagen.

    Ein Servlet, welches ständig auf dem Application-Server läuft und in gewissen Zeitabständen in einer Datenbanktabelle TASK schaut ob ein Task (z.B. Überprüfung von Ordnern) starten muss. Wenn dem so ist dann wird der Task ähnlich wie ein cron-Job gestartet.



  • wenn ich mir die API dok von Timer so anschaue, würde ich in deinem
    falle Timer.schedule(task, firstTime, period) nehmen und für die period
    eben 24h in milisecs angeben. sollte ja in nen long reinpassen ;).

    oder hast du dir das acuh schon so gedacht und es funzt nicht ?

    btw.: lustig das du 'das' Thread schreibst. ich hab ne kollegen der
    immer 'die' Thread benutzt, während ich selber die maskuline variante
    bevorzuge 🙂



  • Hi

    #Ein Servlet, welches ständig auf dem Application-Server läuft und in gewissen Zeitabständen in einer Datenbanktabelle TASK schaut ob ein Task (z.B. Überprüfung von Ordnern) starten muss. Wenn dem so ist dann wird der Task ähnlich wie ein cron-Job gestartet.

    Hmm das hört sich nicht so gut an Cengiz. Das ganze soll nicht unbedingt an eine Datenbank gebunden sein.

    wenn ich mir die API dok von Timer so anschaue, würde ich in deinem
    falle Timer.schedule(task, firstTime, period) nehmen und für die period
    eben 24h in milisecs angeben. sollte ja in nen long reinpassen .

    Die Methode habe ich nir auch shcon angeschaut.
    Da besteht aber das Problem das wenn ich den Server um 13:30 starte, das dann die nächste überprüfung erst am nächsten tag um 13:30 ist.
    Die überprüfung muss immer um 6 Uhr morgens starten.

    btw.: lustig das du 'das' Thread schreibst. ich hab ne kollegen der
    immer 'die' Thread benutzt, während ich selber die maskuline variante
    bevorzuge 🙂

    Ich habe das auch erst jetzt gesehen und lache mich krank.
    Am besten wir einigen uns auf dem Thread. 😃 😃 😃



  • Die Datenbankanbindung hätte allerdings gegenüber dem TimerTask einen Vorteil. Er ist unabhängig vom Laufen der Serverapplikation (Persistenter Task, siehe dein Argument gegen .schedule()) und eine Datenbank ist IMHO sowieso vorhanden, oder?



  • Ja die Datenbank ist vorhanden.

    Schöner wäre es aber natürlich mit der TimerTask Klasse.

    Ich bräuchte eigentlich die Möglichkeit zu überprüfen ob die Aktuelle Uhrzeit 6 Uhr Morgens ist, dann könnte ich den Thread alle 10 min nach schauen lassen.



  • Moment mal ... diese Methode schedule verlangt doch einen Initialzeitpunkt ... wenn du da 06:00 morgens angibst mit einer Periode von 24h msecs dann startet der doch unabhängig wann das Servlet gestartet wurde um 06:00 oder?



  • hmm ich sehe das genauso wie cengizs.
    hast du das denn schon mal ausprobiert ?



  • Ich habe das noch nicht ausproiert.
    Ich habe mir nur die doku durchgelsen und anscheinend nicht 100% verstanden.

    Wer lesen kann ist schwer im vorteil heisst es ja immer.

    Ich schau mir mal das an.

    Wie kann ich den einen Initialzeitpunkt von 6 Uhr morgens eingeben.

    Kann mir da jemand vieleicht ein Beispielg eben.

    BYE



  • Ich habe es leider nicht hinbekommen.

    Kann mir da jemand vieleicht helfen.



  • was hast du denn nun gemacht ?


Anmelden zum Antworten