Struts 2 Spring 2.5.6クォーツスケジューラ統合の例

このチュートリアルでは、

Struts 2 Spring 2.5.6 Quartz 1.6.5

スケジューラを統合する方法を説明します。関係は次のようになります。

Struts 2 <-- Plugin --> Spring <--(Helper)--> Quartz <---> Scheduler task

使用されるツール

  1. Spring 2.5.6

  2. クォーツ1.6.3

  3. Struts 2.1.8

  4. Struts2-spring-plugin 2.1.8

  5. Maven 2

  6. Eclipse 3.6

1.プロジェクトフォルダ

ここにプロジェクトのフォルダ構造があります。


Struts 2 Spring Quartzの統合例、title = "Struts2- Spring-Quartz統合例"、width = 351 、高さ= 493

2.依存関係ライブラリ

すべての依存関係ライブラリを取得するには、Spring、Struts2、Strut2-Spring-Plugin、およびQuartz jarファイルが必要です。


File:pom.xml

  ...
  <dependencies>

    <!-- Struts 2 -->
    <dependency>
          <groupId>org.apache.struts</groupId>
      <artifactId>struts2-core</artifactId>
      <version>2.1.8</version>
        </dependency>

    <!-- Quartz framework -->
    <dependency>
          <groupId>opensymphony</groupId>
      <artifactId>quartz</artifactId>
      <version>1.6.3</version>
    </dependency>

    <!-- Quartz dependency library-->
    <dependency>
      <groupId>commons-collections</groupId>
      <artifactId>commons-collections</artifactId>
      <version>3.2.1</version>
    </dependency>

    <!-- Spring framework -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring</artifactId>
      <version>2.5.6</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>2.5.6</version>
    </dependency>

    <!-- Struts 2 + Spring plugins -->
    <dependency>
          <groupId>org.apache.struts</groupId>
      <artifactId>struts2-spring-plugin</artifactId>
      <version>2.1.8</version>
        </dependency>

  </dependencies>
  ...

3.スケジューラタスク

すべてのスケジューラーロジックをこのクラスに入れます。


File:SchedulerTask.java

package com.mkyong.quartz;

public class SchedulerTask {

   public void printSchedulerMessage() {

       System.out.println("Struts 2 + Spring + Quartz ......");

   }
}

4.春+クォーツ

SpringとQuartzを統合するには、クラスを作成して

org.springframework.scheduling.quartz.QuartzJobBean`を拡張し、スケジューラータスク(

SchedulerTask.java

)をセッターメソッドで参照し、スケジューラーロジックを

executeInternal() `メソッド。


File:SchedulerJob.java

package com.mkyong.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.printSchedulerMessage();

    }
}


File:applicationContext.xml

– `applicationContext.xml`ファイルを作成し、すべての

Spring + Quartz

統合のものを内部に置きます。詳細については、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.quartz.SchedulerTask"/>

   <!-- Scheduler job -->
   <bean name="schedulerJob"
     class="org.springframework.scheduling.quartz.JobDetailBean">

     <property name="jobClass" value="com.mkyong.quartz.SchedulerJob"/>

     <property name="jobDataAsMap">
     <map>
        <entry key="schedulerTask" value-ref="schedulerTask"/>
     </map>
      </property>
   </bean>

   <!-- Cron Trigger, run every 10 seconds -->
   <bean id="cronTrigger"
    class="org.springframework.scheduling.quartz.CronTriggerBean">

    <property name="jobDetail" ref="schedulerJob"/>
    <property name="cronExpression" value="0/10 **  **  **  **  ?"/>

   </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>

5.ストラット2スプリング

  • Struts 2 Spring ** を統合するには、

    org.springframework.web.context.ContextLoaderListener`リスナークラスを

    web.xml`ファイルに置きます。

ファイル:web.xml

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app__2__3.dtd" >

<web-app>
  <display-name>Struts 2 Web Application</display-name>

  <filter>
    <filter-name>struts2</filter-name>
    <filter-class>
      org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
    </filter-class>
  </filter>

  <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/** </url-pattern>
  </filter-mapping>

  <listener>
    <listener-class>
      org.springframework.web.context.ContextLoaderListener
    </listener-class>
  </listener>

</web-app>

6.デモ

Strut2が起動すると、Springを呼び出し、定義されたQuartzのジョブコール `SchedulerTask.printSchedulerMessage()`を10秒ごとに実行します。

INFO: ... initialized Struts-Spring integration successfully
16 Julai 2010 12:51:38 PM org.apache.coyote.http11.Http11Protocol start
INFO: Starting Coyote HTTP/1.1 on http-8080
16 Julai 2010 12:51:38 PM org.apache.jk.common.ChannelSocket init
INFO: JK: ajp13 listening on/0.0.0.0:8009
16 Julai 2010 12:51:38 PM org.apache.jk.server.JkMain start
INFO: Jk running ID=0 time=0/21  config=null
16 Julai 2010 12:51:38 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 2110 ms
Struts 2 + Spring + Quartz ......
Struts 2 + Spring + Quartz ......
Struts 2 + Spring + Quartz ......
Struts 2 + Spring + Quartz ......
Struts 2 + Spring + Quartz ......

ソースコードをダウンロードする

それをダウンロードする –

Struts2-Spring-Quartz-Integration-Example.zip

参考文献

  1. link://struts2/struts-2-spring-integration-example/[Struts 2 Spring

プラグインのドキュメント]。リンク://struts/struts-spring-integration-example/[Struts Spring

統合例]。リンク://struts/struts-quartz-scheduler-integration-example/[Struts

石英統合の例]。リンク://struts/struts-spring-quartz-scheduler-integration-example/[Struts

春の石英の統合例]