Wie kann ein Timer in Java mit Quartz erstellt werden?

Manchmal möchte man Ereignisse mit Java zeitgesteuert oder wiederholt ausführen. Das geht auch mit Java Mitteln. Die bekannte java.util.Timer Klasse kann schon was. Der Open Source Framework Quartz hat ua. aber diese Vorteile:

  • persistence mechanismen
  • flexible Zeitplanung
  • Thread-Pool
  • Managment Schemen
  • flexibel
  • fehlertolerant, auch nach Systemstart

Quartz ist ein kleiner Framework der nur quartz-x.y.z.jar im Classpath benögigt (inkl. log sl4j-api.jar, und c3p0.jar). Er kann Standalone oder im Server als J2EE Anwendung verwendet werden. Die wichtigsten drei Klassen sind Task/Job, Trigger und der Listener.

Sie spielen so zusammen:

quartz-uebersicht

Wie kann ein Timer in Java mit Quartz erstellt werden?

In diesem Beispiel fragen wir alle 5 Minuten eine REST Service ab, der die Anzahl aller Flugzeuge in Hannover lierfert.

Zuerst diese Abhängigkeiten in der pom.xml eintragen:

Wir brauchen nur drei Klassen.

Einen AbfrageListener.java der den JobListener implementiert.

Eine Job Klasse AbfrageJob.java die die eigentliche Arbeit macht und den Job implementiert:

Und nun noch eine Klasse Abfrage.java für die Verbindungen und den Start des Timers:

Hier die UML Übersicht.

Quartz Klassen

Hier die Ausgabe, wenn das Programm gestartet wird:

Es wird alle 5 Minuten die Anzahl der Flugzeuge ausgegeben. Hier in HAJ werden im Moment nur 13 empfangen.

Das ganze Projekt kann von Github geladen werden.