Spring Quartz动态配置时间

咸鱼 2012-10-28

3)记录时间规则

我将时间规则存入数据库中,目的是为了生成历史日志,也可以存入XML文件中。当然您也可以省略此步,直接将转换后的规则放入相应的Quartztrigger中。

4)更新任务触发器的时间设置

到了关键的一步了,也是最简单的一步,一个方法就可以实现了。

首先,我们需要通过trigger的名称得到一个CronTriggerBean;

其次,通过trigger的setCronExpression(StringcronExp)方法将新的表达式注入;

最后,RESCHEDULETHEJOB,OK!

1/**

2*自定义定时器调度时间

3*@paramtriggerName触发器名称

4*@throwsException

5*/

6publicvoidupdateNotificationInterval(StringtriggerName,StringtriggerId)

7throwsSchedulerException,ParseException{

8//得到trigger

9CronTriggerBeantrigger=(CronTriggerBean)scheduler.getTrigger(

10triggerName,Scheduler.DEFAULT_GROUP);

11//得到cronexpression

12StringcronExpression=schedulerDAO.getCronExpression(triggerId);

13//设置trigger的时间规则

14trigger.setCronExpression(cronExpression);

15//重置job

16scheduler.rescheduleJob(triggerName,Scheduler.DEFAULT_GROUP,trigger);

17}

18

至此,目的达到了,快乐的看着您的任务在您自定义的时间下快乐的执行,您是否也想像'HappyFeet'中那只快乐的企鹅一样,Show段踢踏呢;-D

PS:忘了说我的Quartz任务是怎么配置的了,罪过,罪过。

<beanid="compareJob"

class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">

<propertyname="targetObject"ref="compareService"/>

<propertyname="targetMethod"value="compare"/>

<propertyname="concurrent"value="false"/>

</bean>

<beanid="compareTrigger"

class="org.springframework.scheduling.quartz.CronTriggerBean">

<propertyname="jobDetail"ref="compareJob"/>

<propertyname="cronExpression">

<value>0391620*?</value>

</property>

</bean>

<beanid="schedulerFactory"

class="org.springframework.scheduling.quartz.SchedulerFactoryBean">

<propertyname="triggers">

<list>

<reflocal="compareTrigger"/>

</list>

</property>

</bean>

相关推荐