このチュートリアルでは、Struts + Spring + Quartzフレームワークを統合して、スケジューラー・タスクを実行します。 Springには、StrutsとQuartzを簡単に統合するためのソリューションが用意されています。次のような関係:

Struts <--(Plug-In)--> Spring <--(Spring-Helper)--> Quartz <---> Scheduler task

使用されるツール:

  1. Struts 1.3.10

  2. Spring 2.5.6

  3. クォーツ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

参考文献

詳細については、次のチュートリアルを参照してください。

  1. リンク://struts/struts-spring-integration-example/[Struts Spring

統合例]。リンク://spring/spring-quartz-scheduler-example/[Spring Quartz

スケジューラ統合例]