Exemple JSF 2 + Quartz 2
Dans ce didacticiel, nous vous montrons comment exécuter un travail Quartz pendant une application Web JSF via la classe d'écouteurQuartzInitializerListener
dans la bibliothèque Quartz. Cette solution ne fonctionne pas seulement avec JSF 2, le concept est applicable sur presque toutes les applications Web Java standard.
Les outils utilisés :
-
JSF 2.1.11
-
Quartz 2.1.5
-
Maven 3
-
Eclipse 4.2
-
Tomcat 7
LeJSF 2.0 hello
world example précédent est réutilisé, et nous allons l'améliorer pour prendre en charge le travail Quartz via la classe d'écouteQuartzInitializerListener
.
P.S This tutorial is only focus on Quartz integration, for JSF, please read above JSF hello world example.
1. Dossier de projet
Passez en revue la structure finale du répertoire du projet.
2. Les dépendances
Pour déployer sur Tomcat, vous avez besoin de nombreuses dépendances JSF. Lisez les commentaires XML pour plus de détails.
Fichier: 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. Travail de quartz
Créez une classe d'emplois Quartz. Ce cours sera programmé et exécuté plus tard.
Fichier: 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. Configuration du quartz
Créezquartz.properties
etquartz-config.xml
, placez-le dans le «dossier» des ressources (structure Maven), pour les projets non Maven, assurez-vous qu'il peut être localisé dans le chemin de classe du projet.
File : quartz.properties - Configurer l'instance Quartz et lire les paramètres dequartz-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 - Configurer le déclencheur pour exécutercom.example.scheduler.SchedulerJob
AJob AGroup Print a welcome message com.example.scheduler.SchedulerJob dummyTriggerName AJob AGroup 0/5 * * * * ?
Note
Pour une explication détaillée, veuillez lire cet article deQuartz
configuration reference.
5. Intégrer le quartz
C'est là que l'intégration s'est produite. Déclaréorg.quartz.ee.servlet.QuartzInitializerListener
comme classe d'écouteur dans le fichierweb.xml
.
Fichier: web.xml
org.quartz.ee.servlet.QuartzInitializerListener
6. Demo
Pendant le démarrage du projet, Quartz démarre et exécute le travail planifié toutes les 5 secondes.
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
Télécharger le code source
Téléchargez-le -JSF-Quartz-Example.zip (25 ko)