2014年3月28日 星期五

Spring 3.1.2 & quartz 1.8.6 example

project中常會有需要利用排程的工作,

這邊介紹spring和quartz的整合,

首先先利用mvaen建立,可參閱maven build project

接下來是需要用到的dependencies,

pom.xml
<!-- Spring 3 dependencies -->
<dependency>
 <groupId>org.springframework</groupId>
 <artifactId>spring-core</artifactId>
 <version>3.1.2.RELEASE</version>
</dependency>

<!-- QuartzJobBean in spring-context-support.jar -->
<dependency>
 <groupId>org.springframework</groupId>
 <artifactId>spring-context-support</artifactId>
 <version>3.1.2.RELEASE</version>
</dependency>

<!-- Spring + Quartz need transaction -->
<dependency>
 <groupId>org.springframework</groupId>
 <artifactId>spring-tx</artifactId>
 <version>3.1.2.RELEASE</version>
</dependency>
<!-- Spring web -->
<dependency>
 <groupId>org.springframework</groupId>
 <artifactId>spring-web</artifactId>
 <version>3.1.2.RELEASE</version>
</dependency>
<!-- Quartz framework -->
<dependency>
 <groupId>org.quartz-scheduler</groupId>
 <artifactId>quartz</artifactId>
 <version>1.8.6</version>
</dependency>

接者建立排程要執行的工作項目

Statistic.java
package com.quartz;

public class Statistic {
 public void doJob() {
  System.out.println("Statistic doJob !");
 }
}

宣告quartz排程bean
 <bean id="statistic" class="com.quartz.Statistic" />

 <bean id="statisticJob"
  class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
  <property name="targetObject" ref="statistic" />
  <property name="targetMethod" value="doJob" />

 </bean>

設定排程間格的trigger
 <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">

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

 </bean>

建立schedulerFactory結合statistic & trigger
 <bean id="schedulerFactory"
  class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
  <property name="jobDetails">
   <list>
    <ref bean="statisticJob" />
   </list>
  </property>

  <property name="triggers">
   <list>
    <ref bean="cronTrigger" />
   </list>
  </property>
 </bean>

最後進行web.xml配置
<web-app id="WebApp_ID" version="2.4"
 xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
 http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

 <context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>/WEB-INF/classes/applicationContext.xml</param-value>
 </context-param>

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

部署至tomcat後便可看到如下執行畫面








沒有留言:

張貼留言