`
ziyu_1
  • 浏览: 192632 次
  • 来自: ...
社区版块
存档分类
最新评论

Spring Quartz如何动态配置时间(3)

阅读更多
书接上回,上回说到,我们已经将页面的时间设置转为了Cron Expression,下面我记录了时间规则。

3) 记录时间规则

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

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

到了关键的一步了,也是最简单的一步,一个方法就可以实现了。
首先,我们需要通过trigger的名称得到一个CronTriggerBean;
其次,通过trigger的setCronExpression(String cronExp)方法将新的表达式注入;
最后,RESCHEDULE THE JOB,OK!


1        /** */ /**
2       * 自定义定时器调度时间
3       *   @param   triggerName 触发器名称
4        *   @throws   Exception
5        */
6       public    void   updateNotificationInterval(String triggerName, String triggerId)
7                throws   SchedulerException, ParseException    {
8           // 得到trigger
9           CronTriggerBean trigger   =   (CronTriggerBean) scheduler.getTrigger(
10                  triggerName, Scheduler.DEFAULT_GROUP);
11           // 得到cron expression        
12           String cronExpression   =   schedulerDAO.getCronExpression(triggerId);
13           // 设置trigger的时间规则
14           trigger.setCronExpression(cronExpression);
15           // 重置job
16           scheduler.rescheduleJob(triggerName, Scheduler.DEFAULT_GROUP, trigger);
17      }
18 
至此,目的达到了,快乐的看着您的任务在您自定义的时间下快乐的执行,您是否也想像'Happy Feet'中那只快乐的企鹅一样,Show段踢踏呢 ; - D



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


< bean   id ="compareJob"
         class ="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean" >
          < property   name ="targetObject"   ref ="compareService"    />
          < property   name ="targetMethod"   value ="compare"    />
          < property   name ="concurrent"   value ="false"    />
      </ bean > 

      < bean   id ="compareTrigger"
         class ="org.springframework.scheduling.quartz.CronTriggerBean" >
          < property   name ="jobDetail"   ref ="compareJob"    />
          < property   name ="cronExpression" >             
              < value > 0 39 16 20 * ? </ value >
          </ property >
      </ bean >

< bean   id ="schedulerFactory"
         class ="org.springframework.scheduling.quartz.SchedulerFactoryBean" >
          < property   name ="triggers" >
              < list >                    
                      < ref   local ="compareTrigger"    />
              </ list >
          </ property >
      </ bean >
分享到:
评论
1 楼 myhometel 2008-09-09  
您好.我现在也正在尝试去做一个类似定制管理方面的功能,有些地方还是不太清楚,如果可以方便加一下QQ请教一下吗,我的QQ是249988533,多谢!

相关推荐

Global site tag (gtag.js) - Google Analytics