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
春の石英の統合例]