Struts 1 Quartz 2スケジューラー統合の例
このチュートリアルでは、Apache Struts 1.xで簡単なWebアプリケーションプロジェクトを作成し、Quartzスケジューラフレームワークと統合する方法を説明します。プロジェクトの起動時に、Quartzエンジンを起動し、定義されたスケジューラタスクを起動します。
全体的な考え方は単純ですが、統合作業のために
Quartz Strutsプラグイン
を作成するだけで済みます。
Struts <--> Quartz Struts Plug-in <--> Quartz
使用されるツール:
-
Apache Struts 1.3.10
-
クォーツ2.1.5
-
Eclipse IDE
-
Maven
1.依存関係
Mavenを介してStrutsとQuartzの依存関係を取得します。
File:pom.xml
<dependency> <groupId>org.apache.tomcat</groupId> <artifactId>servlet-api</artifactId> <version>6.0.35</version> </dependency> <!-- Struts 1.3 framework --> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts-core</artifactId> <version>1.3.10</version> </dependency> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts-taglib</artifactId> <version>1.3.10</version> </dependency> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts-extras</artifactId> <version>1.3.10</version> </dependency> <!-- Quartz framework --> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.1.5</version> </dependency>
2.クォーツスケジューラの仕事
Quartzジョブを作成してメッセージを印刷します。
ファイル:Scheduler Job.java
package com.mkyong.common.quartz; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; public class SchedulerJob implements Job { public void execute(JobExecutionContext context) throws JobExecutionException { System.out.println("Print Print Struts 1.3 + Quartz 2.1.5 integration example ~"); } }
3. Strutsプラグイン
シンプルなStrutsプラグインを作成し、Quartzフレームワークを統合します。このプラグインでは、Strutsの初期化中に `init()`メソッドが呼び出され、QuartzスケジューラのJobを5秒ごとに開始します。
File:QuartzPlugin.java
package com.mkyong.common.plugin; import javax.servlet.ServletException; import org.apache.struts.action.ActionServlet; import org.apache.struts.action.PlugIn; import org.apache.struts.config.ModuleConfig; import org.quartz.CronScheduleBuilder; import org.quartz.JobBuilder; import org.quartz.JobDetail; import org.quartz.Scheduler; import org.quartz.SchedulerException; import org.quartz.Trigger; import org.quartz.TriggerBuilder; import org.quartz.impl.StdSchedulerFactory; import com.mkyong.common.quartz.SchedulerJob; public class QuartzPlugin implements PlugIn { @Override public void destroy() { //null } @Override public void init(ActionServlet servlet, ModuleConfig config) throws ServletException { JobDetail job = JobBuilder.newJob(SchedulerJob.class) .withIdentity("anyJobName", "group1").build(); try { Trigger trigger = TriggerBuilder .newTrigger() .withIdentity("anyTriggerName", "group1") .withSchedule( CronScheduleBuilder.cronSchedule("0/5 ** ** ** ** ?")) .build(); Scheduler scheduler = new StdSchedulerFactory().getScheduler(); scheduler.start(); scheduler.scheduleJob(job, trigger); } catch (SchedulerException e) { e.printStackTrace(); } } }
4.プラグインを宣言する
strutsの設定ファイル(struts-config.xml)に上記の
Strutsプラグイン
を含めます。
File:struts-config.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN" "http://jakarta.apache.org/struts/dtds/struts-config__1__3.dtd"> <struts-config> <action-mappings> <action path="/Welcome" type="org.apache.struts.actions.ForwardAction" parameter="/pages/quartz__started.jsp"/> </action-mappings> <plug-in className="com.mkyong.common.plugin.QuartzPlugin"/> </struts-config>
5.デモ
Strutsの起動時に、Quartzスケジューラタスクを起動します。
ソースコードをダウンロードする
ダウンロードする –
Struts-Quartz-2-Example.zip
(24 KB)