Struts 1 Spring 2.5.6 Quartz 1.6スケジューラの例
このチュートリアルでは、Struts + Spring + Quartzフレームワークを統合して、スケジューラー・タスクを実行します。 Springには、StrutsとQuartzを簡単に統合するためのソリューションが用意されています。次のような関係:
Struts <--(Plug-In)--> Spring <--(Spring-Helper)--> Quartz <---> Scheduler task
使用されるツール:
-
Struts 1.3.10
-
Spring 2.5.6
-
クォーツ1.6.3
1.スケジューラタスク
スケジューラータスクを作成し、 `printMessage()`はスケジュールするメソッドです。
File:SchedulerTask.java
package com.mkyong.common.quartz;
public class SchedulerTask
{
public void printMessage() {
System.out.println("Struts + Spring + Quartz integration example ~");
}
}
2.スケジューラジョブ
SpringをQuartzと統合するには、Quartz Jobクラスの代わりにSpringの `QuartzJobBean`を拡張するSchedulerJobを作成します。
ファイル:Scheduler Job.java
package com.mkyong.common.quartz;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean;
public class SchedulerJob extends QuartzJobBean
{
private SchedulerTask schedulerTask;
public void setSchedulerTask(SchedulerTask schedulerTask) {
this.schedulerTask = schedulerTask;
}
protected void executeInternal(JobExecutionContext context)
throws JobExecutionException {
schedulerTask.printMessage();
}
}
3.春の石英ヘルパー
Springには、Quartzスケジューラのプロセス(Scheduler、Trigget、Job、JobDetails)全体を単純化するための、多くのQuartzヘルパークラスが用意されています。
File:spring-scheduler.xml
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<!-- Scheduler task -->
<bean name="schedulerTask" class="com.mkyong.common.quartz.SchedulerTask"/>
<!-- Scheduler job -->
<bean name="schedulerJob"
class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass"
value="com.mkyong.common.quartz.SchedulerJob"/>
<property name="jobDataAsMap">
<map>
<entry key="schedulerTask" value-ref="schedulerTask"/>
</map>
</property>
</bean>
<!-- Cron Trigger -->
<bean id="cronTrigger"
class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="schedulerJob"/>
<property name="cronExpression" value="0/5 ** ** ** ** ?"/>
</bean>
<!-- Scheduler -->
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="jobDetails">
<list>
<ref bean="schedulerJob"/>
</list>
</property>
<property name="triggers">
<list>
<ref bean="cronTrigger"/>
</list>
</property>
</bean>
</beans>
4.ストラット
SpringをStrutsに統合するには、Springの `ContextLoaderPlugIn`を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>
<!-- Spring Struts plugin -->
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation"
value="/WEB-INF/spring-scheduler.xml"/>
</plug-in>
</struts-config>
5.どのように動作するのですか?
Strutsの初期化中、Springの
ContextLoaderPlugIn
Strutsプラグインを介してSpring Iocコンテナを開始します。 Springの初期化中にQuartzスケジュールされたジョブが自動的に開始されます。
この例では、 `printMessage()`メソッドは5秒ごとに実行されます。
ソースコードをダウンロードする
それをダウンロードする –
Struts-Spring-Quartz-Example.zip
参考文献
詳細については、次のチュートリアルを参照してください。
-
リンク://struts/struts-spring-integration-example/[Struts Spring
統合例]。リンク://spring/spring-quartz-scheduler-example/[Spring Quartz
スケジューラ統合例]