Exemple JSF 2 + Quartz 2

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 :

  1. JSF 2.1.11

  2. Quartz 2.1.5

  3. Maven 3

  4. Eclipse 4.2

  5. 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.

project directory structure

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)