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)