Struts 2 Spring 2.5.6 Quartz 1.6スケジューラ統合の例
Struts 2 Spring 2.5.6クォーツスケジューラ統合の例
このチュートリアルでは、
Struts 2 Spring 2.5.6 Quartz 1.6.5
スケジューラを統合する方法を説明します。関係は次のようになります。
Struts 2 <-- Plugin --> Spring <--(Helper)--> Quartz <---> Scheduler task
使用されるツール
-
Spring 2.5.6
-
クォーツ1.6.3
-
Struts 2.1.8
-
Struts2-spring-plugin 2.1.8
-
Maven 2
-
Eclipse 3.6
1.プロジェクトフォルダ
ここにプロジェクトのフォルダ構造があります。

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
参考文献
-
link://struts2/struts-2-spring-integration-example/[Struts 2 Spring
統合例]。
http://struts.apache.org/2.x/docs/spring-plugin.html
[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
春の石英の統合例]