程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Spring Quartz如何動態配置時間(3)

Spring Quartz如何動態配置時間(3)

編輯:關於JAVA

書接上回,上回說到,我們已經將頁面的時間設置轉為了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. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved