JSF 2 Quartz 2の例

JSF 2 + Quartz 2の例

このチュートリアルでは、QuartzライブラリのQuartzInitializerListenerリスナークラスを介して、JSFWebアプリケーション中にQuartzジョブを実行する方法を示します。 このソリューションはJSF 2で機能するだけでなく、この概念はほとんどすべての標準Java Webアプリケーションに適用できます。

使用ツール:

  1. JSF 2.1.11

  2. クォーツ2.1.5

  3. メーベン3

  4. Eclipse 4.2

  5. Tomcat 7

以前のJSF 2.0 hello world exampleは再利用され、QuartzInitializerListenerリスナークラスを介してQuartzジョブをサポートするように拡張されます。

P.S This tutorial is only focus on Quartz integration, for JSF, please read above JSF hello world example.

1. プロジェクトフォルダ

最終的なプロジェクトディレクトリ構造を確認します。

project directory structure

2. 依存関係

Tomcatにデプロイするには、多くのJSF依存関係が必要です。 詳細については、XMLコメントをお読みください。

ファイル: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ジョブクラスを作成します。 このクラスは、後でスケジュールして実行します。

ファイル: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. クォーツ構成

quartz.propertiesquartz-config.xmlを作成し、リソースの「フォルダー」(Maven構造)に配置します。Maven以外のプロジェクトの場合は、プロジェクトのクラスパスに配置できることを確認してください。

File : quartz.properties – Quartzインスタンスを構成し、quartz-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.xmlcom.example.scheduler.SchedulerJobを実行するようにトリガーを構成します




    
        
            AJob
            AGroup
            Print a welcome message
            com.example.scheduler.SchedulerJob
        

        
            
                dummyTriggerName
                AJob
                AGroup
                
                0/5 * * * * ?
            
        
    

Note
詳細な説明については、このQuartz configuration referenceの記事をお読みください。

5. Quartzを統合する

これが統合が行われた場所です。 web.xmlファイルでリスナークラスとしてorg.quartz.ee.servlet.QuartzInitializerListenerを宣言しました。

ファイル:web.xml



    
        
            org.quartz.ee.servlet.QuartzInitializerListener
        
    

6. Demo

プロジェクトの起動中、Quartzが起動し、5秒ごとにスケジュールされたジョブを実行します。

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

ソースコードをダウンロード

ダウンロード–JSF-Quartz-Example.zip(25 kb)