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
スケジューラ統合例]