Frage

Für einen Hintergrundjob die Ich mag würde in einem J2EE-Container laufen, fand ich den Vorschlag, ein Startup-Servlet und verwenden Sie den Timer-Service-API erstellen eine verwaltete Timer (in den Antworten auf die What Tools gibt es für Minuten- Batch-Prozesse in J2EE? ).

einen Timer erstellen, muss ich einen Kontext, der die Timer-API implementiert. ( Beispiel )

In der Servlet-Klasse überschreiben ich die init-Methode, aber es hat nur Zugriff auf einen ServletContext, aber nicht auf eine Session. Ein ServletContext keine Methoden, um Timer zu erstellen, so dass ich hier fest.

Wie kann ich den J2EE-Timer-Dienst in dem Startcode eines Servlet zugreifen?

War es hilfreich?

Lösung

Immer wenn ich Timer Job hören, kann ich nicht umhin zu denken, dass diese von einem Java EE Applikationsserver getrennt werden sollten. Sie können so etwas wie Quarz oder ein Betriebssystem geplante Aufgabe oder einen Batch-Manager wie AutoSys verwenden, aber es in ein Servlet scheinen wie ein Missbrauch von Servlets mir einbetten.

Java EE 5-Container haben eine TimerService-, die ein EJB ist. Vielleicht diese werden Ihnen helfen, aussortieren.

Andere Tipps

Statt den Servlet-Startcode zu verwenden (die nach jeder Umschichtung ausgeführt werden) Ich fand es saubere Timer in der Inbetriebnahme des EJB zu starten. Mit EJB 3.1 und Singleton EJB dies jetzt möglich ist, mit viel weniger Code:

http://blogs.oracle.com/kensaks/entry/application_startup_shutdown_callbacks

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top