Beispiel JSF 2 + Quarz 2
In diesem Tutorial zeigen wir Ihnen, wie Sie einen Quarzjob während einer JSF-Webanwendung über die Listener-KlasseQuartzInitializerListener
in der Quarzbibliothek ausführen. Diese Lösung funktioniert nicht nur mit JSF 2, das Konzept ist auch auf fast alle Standard-Java-Webanwendungen anwendbar.
Benutztes Werkzeug :
-
JSF 2.1.11
-
Quarz 2.1.5
-
Maven 3
-
Eclipse 4.2
-
Tomcat 7
Das vorherigeJSF 2.0 hello
world example wird wiederverwendet, und wir werden es verbessern, um den Quarzjob über die Listener-Klasse vonQuartzInitializerListener
zu unterstützen.
P.S This tutorial is only focus on Quartz integration, for JSF, please read above JSF hello world example.
1. Projektordner
Überprüfen Sie die endgültige Projektverzeichnisstruktur.
2. Abhängigkeiten
Für die Bereitstellung auf Tomcat benötigen Sie viele JSF-Abhängigkeiten. Lesen Sie die XML-Kommentare für Details.
Datei: pom.xml
... com.sun.faces jsf-api 2.1.11 com.sun.faces jsf-impl 2.1.11 javax.servlet jstl 1.2 javax.servlet servlet-api 2.5 javax.servlet.jsp jsp-api 2.1 com.sun.el el-ri 1.0 org.quartz-scheduler quartz 2.1.5 ... javax.transaction jta 1.1
3. Quartz Job
Erstellen Sie eine Quarz-Jobklasse. Diese Klasse wird später geplant und ausgeführt.
Datei: SchedulerJob.java
package com.example.scheduler; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; public class SchedulerJob implements Job { @Override public void execute(JobExecutionContext context) throws JobExecutionException { System.out.println("JSF 2 + Quartz 2 example"); } }
4. Quarzkonfiguration
Erstellen Siequartz.properties
undquartz-config.xml
, legen Sie sie im Ressourcenordner (Maven-Struktur) ab. Stellen Sie für Nicht-Maven-Projekte sicher, dass sie sich im Projektklassenpfad befinden.
File : quartz.properties - Konfigurieren Sie die Quarzinstanz und lesen Sie die Einstellungen vonquartz-config.xml
org.quartz.scheduler.instanceName = MyScheduler org.quartz.threadPool.threadCount = 3 org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore org.quartz.plugin.jobInitializer.class =org.quartz.plugins.xml.XMLSchedulingDataProcessorPlugin org.quartz.plugin.jobInitializer.fileNames = quartz-config.xml org.quartz.plugin.jobInitializer.failOnFileNotFound = true
File : quartz-config.xml - Konfigurieren Sie den Trigger so, dasscom.example.scheduler.SchedulerJob
ausgeführt wird
AJob AGroup Print a welcome message com.example.scheduler.SchedulerJob dummyTriggerName AJob AGroup 0/5 * * * * ?
Note
Ausführliche Erläuterungen finden Sie in diesem Artikel zuQuartz
configuration reference.
5. Quarz integrieren
Hier fand die Integration statt. Deklariertorg.quartz.ee.servlet.QuartzInitializerListener
als Listener-Klasse inweb.xml
Datei.
Datei: web.xml
org.quartz.ee.servlet.QuartzInitializerListener
6. Demo
Während des Projektstarts wird Quartz gestartet und der geplante Job alle 5 Sekunden ausgeführt.
Jul 26, 2012 3:32:18 PM org.apache.coyote.AbstractProtocol start INFO: Starting ProtocolHandler ["http-bio-8080"] Jul 26, 2012 3:32:18 PM org.apache.coyote.AbstractProtocol start INFO: Starting ProtocolHandler ["ajp-bio-8009"] Jul 26, 2012 3:32:18 PM org.apache.catalina.startup.Catalina start INFO: Server startup in 3591 ms JSF 2 + Quartz 2 example JSF 2 + Quartz 2 example JSF 2 + Quartz 2 example
Quellcode herunterladen
Laden Sie es herunter -JSF-Quartz-Example.zip (25 kb)