JavaScud | Forum | JIRA | Blog |
  Dashboard > SpringSide > Home > quartz
  SpringSide Log In View a printable version of the current page.  
  quartz
Added by Anonymous, last edited by Anonymous on May 21, 2008  (view change)
Labels: 
(None)

1.与Spring集成

Spring中与quartz 的结合方式有两种,一种是以quartz本身的一些特性,没有很好的体现springside的一切都是pojo宗旨,这里暂且不谈,而springside中实现的是以pojo为job的一种做法,大致的配置如下:

    <!-- 使用pojo来做job,指定pojo和method -->
    <bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
        <property name="targetObject" ref="bookStockChecker"/>
        <property name="targetMethod" value="check"/>
    </bean>

而quartz的Trigger和Scheduler都可以用现成的,基本我们也没有扩展的必要,基本配置就如下:

    <bean name="quartzScheduler"
          class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <property name="triggers">
            <list>
                <ref bean="cronTrigger"/>
            </list>
        </property>
        <!--<property name="dataSource" ref="dataSource"/> -->
        <property name="configLocation" value="classpath:quartz.properties"/>
    </bean>
  <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
        <property name="jobDetail" ref="jobDetail"/>
        <!--朝九晚五工作时间内每半小时执行一次-->
        <property name="cronExpression" value="0 0/30 9-17 *,* * ?"/>
    </bean>

需要简单说明的是强大的cronTrigger,类似著名的cron表达式,方便我们任意的job控制的想法,当然quartz也有简单的simpleTrigger,实现的东西就和jdk中的timer差不多了,详细情况可以参考quartz 的文档。

2. Quartz相对于JDK Timer Task的进步 

首先是细致的Cron语法

然后是可以把任务执行情况存储于数据库中,即使服务器重起,也能保证任务计划正确执行。可惜hsqldb不支持select * from foo for update 这样的行锁定sql语法,无法demo.

还有线程池并发执行的能力

还有群集执行的能力

以上特征都可以在quartz的配置文件quartz.properties里看出样貌。

3.Tips

1.在Spring配置文件里如何设定定时执行函数的参数?

定时执行的函数应该是无参的。正确的方法设定该POJO的成员变量,或者由POJO自行去读取某个配置文件。

2.《Quartz Job Scheduling Framework》

2006年新书,可以Emule得到,很多原来文档不详细的地方如clustering等都可以在里面看到。

Site running on a free Atlassian Confluence Open Source Project License granted to WebWork China. Evaluate Confluence today.
Powered by Atlassian Confluence, the Enterprise Wiki. (Version: 2.5.3 Build:#808 May 29, 2007) - Bug/feature request - Contact Administrators