Frage

Mein Arbeitgeber hat mich gebeten, nur ein zeitlich Batch-Verfahren in einer Java EE WebSphere Anwendung sie ausgeführt haben zu laufen. Es sollte eine bestimmte Klasse um 11:30 Uhr täglich ausgeführt werden.

Ich bin nicht sehr vertraut mit Java EE noch WebSphere-Server (oder tomcat, in der Entwicklungsumgebung), und ich habe um gegraben, aber alles, was ich gefunden habe, ist über die Java-Timer-Klasse, aber nicht, wie es eingerichtet oder rufen sie es.

Es scheint, dass die Datei web.xml Bearbeitung als auch erforderlich ist.

Jede Hilfe wird geschätzt!

War es hilfreich?

Lösung

Sie sollten bei der Open-Source aussehen Quartz Bibliothek von OpenSymphony. Sehr einfach für diese Art der Sache und perfekt zu nutzen.

TimerTasks ist am besten geeignet für etwas in kurzer Zeit in der Zukunft läuft. Aber für eine wiederholte Ausführung in einem großen zeitlichen Rahmen wie dieser, zeichnet Quarz. Sie können sogar Ihre Liste der anstehenden Aufgaben in persistenten Speicher halten wie eine Datei oder Datenbank, so bevorstehenden Zeitaufträge nicht verloren gehen, wenn die Anwendung neu gestartet wird.

Außerdem gibt es eine fantastische Abstraktion für Quartz im Spring-Framework.

Andere Tipps

In WebSphere können Sie den Scheduler-Service verwenden, um die Ausführung einer Methode in einer Java-Klasse auszulösen. Der Scheduler bietet einen Kalender für die Planung der Ausführung von Jobs (ähnlich cron), oder Sie können Ihre eigene entwickeln.

Hier ist ein Link auf die Seite des Schedulers in der Beschreibung von 6,1 Dokumentation:

http://publib.boulder.ibm.com/infocenter /wasinfo/v6r1/index.jsp

EJB 3.1 wird Timer Dienste verbessert haben, sowie Application-Lifecycle-Haken, die die Notwendigkeit entfernen Servlets zu verwenden, um Aufgaben ohne Benutzerinteraktion zu starten.

Dies kann die Frage Titel beantworten, aber für die „echte“ Frage einer Legacy-Anwendung in Bezug auf (vor mehr als 6 Monaten geschrieben;)) auf Websphere laufen würde ich mit dem Start-up-Servlet und dem EJB-Timer gehen empfehlen Bedienung.

Timer Service in J2EE 1.4 (EJB 2.1)

Für EJB 3.0 (und 3.1, sobald verfügbar), gibt es einige netten Anmerkungen;)

Ich würde nicht vorstellen eine andere Bibliothek , wenn Sie es wirklich brauchen. Der Timer-Dienst sollte einen beliebigen Job für die Durchführung auf einer täglichen Basis ausreichen.

HTH,
Martin

In der web.xml können Sie ein Servlet konfigurieren beim Start zu laden.
Syntax:


  

Tun Sie dies, dann in der init-Methode im Servlet können Sie einen Timer / Timertask einrichten zu tun, was immer Sie tun müssen. TimerTasks sind wie Threads außer Sie können sie planen, wann ausgeführt werden.

Quarz ist Teil der Standard JBoss 4.2.x Verteilung.

Und ist eine wirklich gute Bibliothek, das ohne viel Arbeit Sie auch einfache Workflows definieren können.

Es gibt keine Unterstützung für die Terminierung in WebSphere.

Wenn Sie auf Unix sind, können Sie crontab verwenden, um eine Anfrage zu einer Seite Ihrer WebSphere Application zu planen. Ich nehme an Fenstern gibt es auch eine Möglichkeit, einen Antrag auf eine Seite zu planen. In meinem crontab plane ich eine Anfrage zu einer Webseite jeden Tag um 08.45 Uhr

45 8 * * * GET http://www.domain.com/myBatch?securitykey = Verysecret

Jetzt wird jeder Morgen des myBatch Servlet aufgerufen und es kann ich tun, was zu diesem Zeitpunkt getan werden muss. Um die anderen Aufrufen dieser Seite zu vermeiden und die Partie zu starten, habe ich den SecurityKey Parameter.

Es gibt Unterstützung für die Terminierung in WebSphere enthalten.

WAS v7.0

scroll top