JSF 2 + Quartz 2の例
このチュートリアルでは、QuartzライブラリのQuartzInitializerListener
リスナークラスを介して、JSFWebアプリケーション中にQuartzジョブを実行する方法を示します。 このソリューションはJSF 2で機能するだけでなく、この概念はほとんどすべての標準Java Webアプリケーションに適用できます。
使用ツール:
-
JSF 2.1.11
-
クォーツ2.1.5
-
メーベン3
-
Eclipse 4.2
-
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. プロジェクトフォルダ
最終的なプロジェクトディレクトリ構造を確認します。
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.properties
とquartz-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.xml –com.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)