posts - 40,  comments - 187,  trackbacks - 0

          書接上回,上回說(shuō)到,我們已經(jīng)將頁(yè)面的時(shí)間設(shè)置轉(zhuǎn)為了Cron Expression,下面我記錄了時(shí)間規(guī)則。

          3) 記錄時(shí)間規(guī)則

                我將時(shí)間規(guī)則存入數(shù)據(jù)庫(kù)中,目的是為了生成歷史日志,也可以存入XML文件中。當(dāng)然您也可以省略此步,直接將轉(zhuǎn)換后的規(guī)則放入相應(yīng)的Quartz trigger中。


          4) 更新任務(wù)觸發(fā)器的時(shí)間設(shè)置

          到了關(guān)鍵的一步了,也是最簡(jiǎn)單的一步,一個(gè)方法就可以實(shí)現(xiàn)了。

          首先,我們需要通過(guò)trigger的名稱得到一個(gè)CronTriggerBean;

          其次,通過(guò)trigger的setCronExpression(String cronExp)方法將新的表達(dá)式注入;

          最后,RESCHEDULE THE JOB,OK!

           1     /**
           2      * 自定義定時(shí)器調(diào)度時(shí)間
           3      *  @param
           triggerName 觸發(fā)器名稱
           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          // 設(shè)置trigger的時(shí)間規(guī)則

          14         trigger.setCronExpression(cronExpression);
          15          // 重置job

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

          18

          至此,目的達(dá)到了,快樂(lè)的看著您的任務(wù)在您自定義的時(shí)間下快樂(lè)的執(zhí)行,您是否也想像'Happy Feet'中那只快樂(lè)的企鵝一樣,Show段踢踏呢 ; - D


          PS:忘了說(shuō)我的Quartz任務(wù)是怎么配置的了,罪過(guò),罪過(guò)。

          < 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 >


                                                                                              THE END

          posted on 2007-01-10 16:55 小立飛刀 閱讀(20707) 評(píng)論(22)  編輯  收藏 所屬分類: Spring

          FeedBack:
          # re: Spring Quartz如何動(dòng)態(tài)配置時(shí)間(3)
          2007-01-10 17:14 | zip
          # re: Spring Quartz如何動(dòng)態(tài)配置時(shí)間(3)
          2007-01-10 17:55 | ajax java group
          感覺(jué)有點(diǎn)像 crontab .....  回復(fù)  更多評(píng)論
            
          # re: Spring Quartz如何動(dòng)態(tài)配置時(shí)間(3)
          2007-01-11 10:19 | 小雪飛刀
          其實(shí)Quartz的Cron Expression就是來(lái)自Unix中,所以感覺(jué)很像crontab命令  回復(fù)  更多評(píng)論
            
          # re: Spring Quartz如何動(dòng)態(tài)配置時(shí)間(3)
          2007-01-11 18:25 | yy77
          上面這個(gè)updateNotificationInterval究竟寫在哪個(gè)類里面呢?這個(gè)類要在xml里面怎么配置才能夠得到scheduler的對(duì)象呢?
          看最后聲明的那部分沒(méi)有這個(gè)類的部分啊。難道是直接通過(guò)context來(lái)獲得么?  回復(fù)  更多評(píng)論
            
          # re: Spring Quartz如何動(dòng)態(tài)配置時(shí)間(3)
          2007-01-15 10:59 | 小雪飛刀
          to yy77

          updateNotificationInterval() 這個(gè)方法可以寫在你的業(yè)務(wù)邏輯類中,scheduler對(duì)象在這個(gè)類中注入就可以用了。如:
          public class SchedulerService {

          private Scheduler scheduler;

          /**
          * @param scheduler The scheduler to set.
          */
          public void setScheduler(Scheduler scheduler) {
          this.scheduler = scheduler;
          }

          public void updateNotificationInterval(...) {
          //...
          scheduler.rescheduleJob(...);
          //...
          }
          }
          在Spring中的配置如下:
          <bean id="schedulerServiceTarget" class="SchedulerService">
          <property name="scheduler" ref="schedulerFactory" />
          </bean>
          而schedulerFactory這個(gè)bean我在文章中寫到了
          < bean id ="schedulerFactory"
          class ="org.springframework.scheduling.quartz.SchedulerFactoryBean" >
          < property name ="triggers" >
          < list >
          < ref local ="compareTrigger" />
          </ list >
          </ property >
          </ bean >

          不知道這樣能不能回答你的問(wèn)題呢,yy77 ?;-)

            回復(fù)  更多評(píng)論
            
          # re: Spring Quartz如何動(dòng)態(tài)配置時(shí)間(3)[未登錄](méi)
          2007-02-12 16:48 | Spring
          我想請(qǐng)問(wèn)一下:我都配置好了,程序到了制定的時(shí)間會(huì)進(jìn)入方法A,我想在進(jìn)入方法A后,就取得< value > 0 39 16 20 * ? </ value >這個(gè)值,應(yīng)該怎么實(shí)現(xiàn)呢?謝謝
            回復(fù)  更多評(píng)論
            
          # re: Spring Quartz如何動(dòng)態(tài)配置時(shí)間(3)
          2007-02-12 17:00 | 小雪飛刀
          @Spring
          我理解您的意思是:
          您的Method A中需要用到這個(gè)時(shí)間,但是不知道從哪里取到。

          我的解決方法是將所有的時(shí)間規(guī)則放入數(shù)據(jù)庫(kù)中,然后從數(shù)據(jù)庫(kù)中讀取最近插入的一個(gè)值就是所需時(shí)間了。

          不知道這樣能不能回答你的問(wèn)題。  回復(fù)  更多評(píng)論
            
          # re: Spring Quartz如何動(dòng)態(tài)配置時(shí)間(3)[未登錄](méi)
          2007-02-13 09:36 | Spring
          感謝您的回答,可能我沒(méi)表達(dá)清楚我的意思!我現(xiàn)在的時(shí)間是在數(shù)據(jù)庫(kù)中,就用您的方法假設(shè),我要定時(shí)觸發(fā)這個(gè)方法< property name ="targetMethod" value ="compare" /> ,但是這個(gè)方法會(huì)在不同的時(shí)間點(diǎn)多次觸發(fā),比如每月最后1天,每個(gè)星期第一天都是觸發(fā)這個(gè)方法!我這里可以配置多個(gè)時(shí)間么?< property name ="cronExpression" >
          < value > 0 39 16 20 * ? </ value >
          </ property > 然后把這個(gè)時(shí)間值放進(jìn)數(shù)據(jù)庫(kù)查詢!謝謝
            回復(fù)  更多評(píng)論
            
          # re: Spring Quartz如何動(dòng)態(tài)配置時(shí)間(3)[未登錄](méi)
          2007-02-13 15:16 | 過(guò)客
          如果找不到調(diào)用的方法一般是什么錯(cuò)誤?類的名字,方法名在多次查證都是正確的  回復(fù)  更多評(píng)論
            
          # re: Spring Quartz如何動(dòng)態(tài)配置時(shí)間(3)
          2007-02-13 15:32 | 小雪飛刀
          @過(guò)客
          能否把你的配置文件貼出來(lái)看看?  回復(fù)  更多評(píng)論
            
          # re: Spring Quartz如何動(dòng)態(tài)配置時(shí)間(3)
          2007-02-13 15:34 | 小雪飛刀
          @Spring
          我查閱了Quartz的文檔,沒(méi)有找到可以為一個(gè)Job配置多個(gè)value elements的方法,所以有個(gè)比較笨的方法是設(shè)置多個(gè)Job,讓它們指向同一個(gè)Method,按照不同的時(shí)間執(zhí)行。
            回復(fù)  更多評(píng)論
            
          # re: Spring Quartz如何動(dòng)態(tài)配置時(shí)間(3)
          2007-05-22 16:14 | jinhaha
          請(qǐng)問(wèn)我要是調(diào)用多個(gè)方法怎么辦?  回復(fù)  更多評(píng)論
            
          # re: Spring Quartz如何動(dòng)態(tài)配置時(shí)間(3)
          2007-05-22 17:29 | 小雪飛刀
          @jinhaha

          理論上時(shí)可以的。你可以通過(guò)加載mutiple propertys達(dá)到調(diào)用多個(gè)方法的目的。如:
          <property name="targetMethod">
          <list>
          <value>register</value>
          <value>compare</value>
          </list>
          </property>

          不過(guò)我沒(méi)有實(shí)際實(shí)驗(yàn)過(guò),您可以實(shí)驗(yàn)一下,告訴我結(jié)果 :)
            回復(fù)  更多評(píng)論
            
          # re: Spring Quartz如何動(dòng)態(tài)配置時(shí)間(3)
          2007-08-10 12:14 | boddi
          thrank you!
            是這樣的,客戶有個(gè)需求是可以自己修改任務(wù)的間隔時(shí)間的!(這個(gè)值是設(shè)置到數(shù)據(jù)庫(kù)中的),因?yàn)镾impleTriggerBean必須設(shè)置repeatInterval屬性,而這個(gè)值因?yàn)槭潜4嬖跀?shù)據(jù)中的,所以我想設(shè)置兩個(gè)定時(shí)任務(wù)CMSTransformCRMTrigger和ScheduleInfoActionTrigger,ScheduleInfoActionTrigger在CMSTransformCRMTrigger任務(wù)執(zhí)行前觸發(fā):其目的是為CMSTransformCRMTrigger根據(jù)數(shù)據(jù)庫(kù)的值設(shè)置其repeatInterval屬性,配置文件如下:
              <bean id="CMSTransformCRMEngine" class="org.springframework.aop.framework.ProxyFactoryBean">
                  
          <property name="targetSource">
                      
          <bean class="org.springframework.aop.target.SingletonTargetSource">
                          
          <constructor-arg>
                              
          <bean class="com.server.business.cms.CMSTransformCRMEngine"/>
                          
          </constructor-arg>
                      
          </bean>
                  
          </property>
                  
          <property name="interceptorNames">
                      
          <list>
                          
          <value>CallContextInterceptor</value>
                      
          </list>
                  
          </property>
              
          </bean>

           
          <bean id="CMSTransformCRMJob" class="org.springframework.scheduling.quartz.JobDetailBean">         
                  
          <property name="jobClass">
                      
          <value>com.wisecrm.server.business.cms.CMSTransformCRMScheduledTask</value>
                  
          </property>    
                  
          <property name="jobDataAsMap">
                      
          <map>
                          
          <entry key="cmsTranCRMEnginer">
                              
          <ref bean="CMSTransformCRMEngine"></ref>
                          
          </entry>
                      
          </map>
                  
          </property>
              
          </bean>
              
               
          <bean id="CMSTransformCRMTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">         
                  
          <property name="jobDetail">
                      
          <ref bean="CMSTransformCRMJob"></ref>
                  
          </property>    
                  
          <property name="startDelay">
                      
          <value>90000</value>
                  
          </property>
                  
          <property name="repeatInterval">
                      
          <value>90000</value>
                  
          </property>
              
          </bean>
              
              
          <bean id="ScheduleInfoAction" class="com.wisecrm.server.business.cms.ScheduleInfoAction">         
                  
          <property name="dataSource" ref="DataSource"/>     
                  
          <property name="scheduler" ref="schedulerFactory"/>     
              
          </bean>
              
              
          <bean id="ScheduleInfoActionFactory" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
                  
          <property name="targetObject" ref="ScheduleInfoAction"/>
                  
          <property name="targetMethod">
                       
          <value>setTaskTimeByPreference</value>
                  
          </property>
                  
          <!--property name="arguments">
                      <list>
                          <ref local="DataSource"/>
                          <ref local="schedulerFactory"/>
                      </list>
                  </property
          -->
                  
          <property name="concurrent" value="false"/>
              
          </bean>
              
              
          <bean id="ScheduleInfoActionTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">         
                  
          <property name="jobDetail">
                      
          <ref bean="ScheduleInfoActionFactory"></ref>
                  
          </property>    
                  
          <property name="startDelay">
                      
          <value>80000</value>
                  
          </property>
                  
          <property name="repeatInterval">
                      
          <value>50000</value>
                  
          </property>
              
          </bean>
              
              
          <bean id="schedulerFactory" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">         
                  
          <property name="triggers">             
                      
          <list>                 
                          
          <ref local="CMSTransformCRMTrigger"/>             
                          
          <ref local="ScheduleInfoActionTrigger"/>             
                      
          </list>         
                  
          </property>
              
          </bean>

          ScheduleInfoAction是動(dòng)態(tài)設(shè)置間隔時(shí)間的接口:
          public class ScheduleInfoAction {

              
          private Scheduler scheduler;

              
          public void setTaskTimeByPreference() throws SchedulerException {
                  
          if (isStartCMSTransformCRMTask()) {
                      SimpleTriggerBean trigger 
          = (SimpleTriggerBean) scheduler.getTrigger("ScheduleInfoActionTrigger",
                                      Scheduler.DEFAULT_GROUP);
                      trigger.setRepeatInterval(Long.parseLong(Application.getSystemSettingService().getPrefValue(
          "CMSPeriod")));
                      scheduler.rescheduleJob(
          "ScheduleInfoActionTrigger",
                              Scheduler.DEFAULT_GROUP, trigger);
                  }
           
          else {
                      scheduler.shutdown();
                  }

              }


              public
           boolean isStartCMSTransformCRMTask() {
                  
          return Application.getSystemSettingService().getPrefValue("CMSPeriod"!= null;
              }


              public
           Scheduler getScheduler() {
                  
          return scheduler;
              }


              public
           void setScheduler(Scheduler scheduler) {
                  
          this.scheduler = scheduler;
              }


          }
            但是不知為和兩個(gè)任務(wù)都不執(zhí)行?
          后面我再在程序啟動(dòng)時(shí)就通過(guò)ScheduleInfoAction的factoryBean
          設(shè)置CMSTransformCRMTrigger其repeatInterval屬性,只保留一個(gè)定時(shí)任務(wù)就可以了,
          配置如下:
          <bean id="ScheduleInfoAction" class="com.wisecrm.server.business.cms.ScheduleInfoAction">         
                  
          <property name="scheduler" ref="schedulerFactory"/>     
              
          </bean>
              
              
          <bean id="ScheduleInfoActionFactory" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
                  
          <property name="targetObject" ref="CMSTransformCRMEngine"/>
                  
          <property name="targetMethod">
                       
          <value>run</value>
                  
          </property>
                  
          <property name="concurrent" value="false"/>
              
          </bean>
              
              
          <bean id="ScheduleInfoActionTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">         
                  
          <property name="jobDetail">
                      
          <ref bean="ScheduleInfoActionFactory"></ref>
                  
          </property>    
                  
          <property name="startDelay">
                      
          <value>80000</value>
                  
          </property>
                  
          <property name="repeatInterval">
                      
          <value>80000</value>
                  
          </property>
              
          </bean>
              
              
          <bean id="schedulerFactory" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">         
                  
          <property name="triggers">             
                      
          <list>            
                          
          <ref bean="ScheduleInfoActionTrigger"/>             
                      
          </list>         
                  
          </property>
              
          </bean>
          但總感覺(jué)到有點(diǎn)笨拙,你幫忙參考下   回復(fù)  更多評(píng)論
            
          # re: Spring Quartz如何動(dòng)態(tài)配置時(shí)間(3)
          2007-08-10 14:32 | 小雪飛刀
          @boddi
          首先Scheduler是接口不是類,其次FactoryBean that sets up a Quartz Scheduler, manages its lifecycle as part of the Spring application context, and exposes the Scheduler reference for dependency injection.

          您下面這個(gè)配置我不太明白是什么意思?能否把整個(gè)配置文件貼出來(lái)?
            回復(fù)  更多評(píng)論
            
          # re: Spring Quartz如何動(dòng)態(tài)配置時(shí)間(3)
          2007-08-11 14:56 | boddi

          thrank you!
            是這樣的,客戶有個(gè)需求是可以自己修改任務(wù)的間隔時(shí)間的!(這個(gè)值是設(shè)置到數(shù)據(jù)庫(kù)中的),因?yàn)镾impleTriggerBean必須設(shè)置repeatInterval屬性,而這個(gè)值因?yàn)槭潜4嬖跀?shù)據(jù)中的,所以我想設(shè)置兩個(gè)定時(shí)任務(wù)CMSTransformCRMTrigger和ScheduleInfoActionTrigger,ScheduleInfoActionTrigger在CMSTransformCRMTrigger任務(wù)執(zhí)行前觸發(fā):其目的是為CMSTransformCRMTrigger根據(jù)數(shù)據(jù)庫(kù)的值設(shè)置其repeatInterval屬性,配置文件如下:

              <bean id="CMSTransformCRMEngine" class="org.springframework.aop.framework.ProxyFactoryBean">
                  
          <property name="targetSource">
                      
          <bean class="org.springframework.aop.target.SingletonTargetSource">
                          
          <constructor-arg>
                              
          <bean class="com.server.business.cms.CMSTransformCRMEngine"/>
                          
          </constructor-arg>
                      
          </bean>
                  
          </property>
                  
          <property name="interceptorNames">
                      
          <list>
                          
          <value>CallContextInterceptor</value>
                      
          </list>
                  
          </property>
              
          </bean>

           
          <bean id="CMSTransformCRMJob" class="org.springframework.scheduling.quartz.JobDetailBean">         
                  
          <property name="jobClass">
                      
          <value>com.wisecrm.server.business.cms.CMSTransformCRMScheduledTask</value>
                  
          </property>    
                  
          <property name="jobDataAsMap">
                      
          <map>
                          
          <entry key="cmsTranCRMEnginer">
                              
          <ref bean="CMSTransformCRMEngine"></ref>
                          
          </entry>
                      
          </map>
                  
          </property>
              
          </bean>
              
               
          <bean id="CMSTransformCRMTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">         
                  
          <property name="jobDetail">
                      
          <ref bean="CMSTransformCRMJob"></ref>
                  
          </property>    
                  
          <property name="startDelay">
                      
          <value>90000</value>
                  
          </property>
                  
          <property name="repeatInterval">
                      
          <value>90000</value>
                  
          </property>
              
          </bean>
              
              
          <bean id="ScheduleInfoAction" class="com.wisecrm.server.business.cms.ScheduleInfoAction">         
                  
          <property name="dataSource" ref="DataSource"/>     
                  
          <property name="scheduler" ref="schedulerFactory"/>     
              
          </bean>
              
              
          <bean id="ScheduleInfoActionFactory" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
                  
          <property name="targetObject" ref="ScheduleInfoAction"/>
                  
          <property name="targetMethod">
                       
          <value>setTaskTimeByPreference</value>
                  
          </property>
                  
          <!--property name="arguments">
                      <list>
                          <ref local="DataSource"/>
                          <ref local="schedulerFactory"/>
                      </list>
                  </property
          -->
                  
          <property name="concurrent" value="false"/>
              
          </bean>
              
              
          <bean id="ScheduleInfoActionTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">         
                  
          <property name="jobDetail">
                      
          <ref bean="ScheduleInfoActionFactory"></ref>
                  
          </property>    
                  
          <property name="startDelay">
                      
          <value>80000</value>
                  
          </property>
                  
          <property name="repeatInterval">
                      
          <value>50000</value>
                  
          </property>
              
          </bean>
              
              
          <bean id="schedulerFactory" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">         
                  
          <property name="triggers">             
                      
          <list>                 
                          
          <ref local="CMSTransformCRMTrigger"/>             
                          
          <ref local="ScheduleInfoActionTrigger"/>             
                      
          </list>         
                  
          </property>
              
          </bean>


          ScheduleInfoAction是動(dòng)態(tài)設(shè)置間隔時(shí)間的接口:

          public class ScheduleInfoAction {

              
          private Scheduler scheduler;

              
          public void setTaskTimeByPreference() throws SchedulerException 
          {
                  
          if (isStartCMSTransformCRMTask()) 
          {
                      SimpleTriggerBean trigger 
          = (SimpleTriggerBean) scheduler.getTrigger("ScheduleInfoActionTrigger
          ",
                                      Scheduler.DEFAULT_GROUP);
                      trigger.setRepeatInterval(Long.parseLong(Application.getSystemSettingService().getPrefValue(
          "CMSPeriod
          ")));
                      scheduler.rescheduleJob(
          "ScheduleInfoActionTrigger
          ",
                              Scheduler.DEFAULT_GROUP, trigger);
                  }
           
          else {
                      scheduler.shutdown();
                  }

              }


              public
           boolean isStartCMSTransformCRMTask() {
                  
          return Application.getSystemSettingService().getPrefValue("CMSPeriod"!= null
          ;
              }


              public
           Scheduler getScheduler() {
                  
          return scheduler;
              }


              public
           void setScheduler(Scheduler scheduler) {
                  
          this.scheduler 
          = scheduler;
              }


          }

            但是不知為和兩個(gè)任務(wù)都不執(zhí)行?

          后面我再在程序啟動(dòng)時(shí)就通過(guò)ScheduleInfoAction的factoryBean

          設(shè)置CMSTransformCRMTrigger其repeatInterval屬性,只保留一個(gè)定時(shí)任務(wù)就可以了,

          配置如下:


          <bean id="ScheduleInfoAction" class="com.wisecrm.server.business.cms.ScheduleInfoAction">         
                  
          <property name="scheduler" ref="schedulerFactory"/>     
              
          </bean>
              
              
          <bean id="ScheduleInfoActionFactory" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
                  
          <property name="targetObject" ref="CMSTransformCRMEngine"/>
                  
          <property name="targetMethod">
                       
          <value>run</value>
                  
          </property>
                  
          <property name="concurrent" value="false"/>
              
          </bean>
              
              
          <bean id="ScheduleInfoActionTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">         
                  
          <property name="jobDetail">
                      
          <ref bean="ScheduleInfoActionFactory"></ref>
                  
          </property>    
                  
          <property name="startDelay">
                      
          <value>80000</value>
                  
          </property>
                  
          <property name="repeatInterval">
                      
          <value>80000</value>
                  
          </property>
              
          </bean>
              
              
          <bean id="schedulerFactory" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">         
                  
          <property name="triggers">             
                      
          <list>            
                          
          <ref bean="ScheduleInfoActionTrigger"/>             
                      
          </list>         
                  
          </property>
              
          </bean>


          但總感覺(jué)到有點(diǎn)笨拙,你幫忙參考下,為什么repeatInterval不能通過(guò)繼承SimpleTriggerBean復(fù)寫getRepeatInterval方法去設(shè)置呢?

            回復(fù)  更多評(píng)論
            
          # re: Spring Quartz如何動(dòng)態(tài)配置時(shí)間(3)
          2007-08-22 11:36 | kk
          問(wèn)一下:
          Qest1:rescheduleJob是不是在兩種場(chǎng)景下使用,一是服務(wù)重啟時(shí),一是用戶需要更改任務(wù)的時(shí)間規(guī)則(觸發(fā)器)時(shí)?

          Qest2:用戶在更改任務(wù)的時(shí)間規(guī)則(觸發(fā)器)時(shí),可能還需要任務(wù)已經(jīng)運(yùn)行的狀態(tài)信息。
          場(chǎng)景一:某個(gè)任務(wù)從2007/1/1日開(kāi)始,每天8:30運(yùn)行。到了2007/5/1日,用戶想更改為每天9:00運(yùn)行,新觸發(fā)器設(shè)為2007/1/1,9:00。希望的更新觸發(fā)器后第一次運(yùn)行時(shí)間是2007/5/2日 9:00。請(qǐng)問(wèn)quartz可以做到嗎?
          場(chǎng)景二:某任務(wù)的執(zhí)行次數(shù)為100次,當(dāng)執(zhí)行到30次時(shí),用戶希望把執(zhí)行次數(shù)改為150次,新觸發(fā)器設(shè)為150次,所以任務(wù)還需執(zhí)行150-(100-30)=80次。請(qǐng)問(wèn)quartz可以做到嗎?  回復(fù)  更多評(píng)論
            
          # re: Spring Quartz如何動(dòng)態(tài)配置時(shí)間(3)
          2008-10-28 15:28 | 風(fēng)續(xù)飄
          你好,我是剛剛搞開(kāi)發(fā)不久,想學(xué)習(xí)quartz,你的這個(gè)程序的時(shí)間是從數(shù)據(jù)庫(kù)里來(lái)讀取的嗎?能不能把你的表結(jié)構(gòu)發(fā)我看看,感激不盡!  回復(fù)  更多評(píng)論
            
          # re: Spring Quartz如何動(dòng)態(tài)配置時(shí)間(3)
          2008-10-30 13:17 | 小立飛刀
          @風(fēng)續(xù)飄

          表結(jié)構(gòu)很簡(jiǎn)單,只需要key,value兩個(gè)字段就可以滿足要求。您也可以采用其他存儲(chǔ)方式,如存入xml中。  回復(fù)  更多評(píng)論
            
          # re: Spring Quartz如何動(dòng)態(tài)配置時(shí)間(3)
          2009-04-23 18:18 | sunday
          @kk
          你好,我也碰到了你所說(shuō)的第一種情況,不知您是怎么解決的?  回復(fù)  更多評(píng)論
            
          # re: Spring Quartz如何動(dòng)態(tài)配置時(shí)間(3)
          2009-04-28 13:33 | 小立飛刀
          @sunday
          什么情況 能否說(shuō)得詳細(xì)些?
            回復(fù)  更多評(píng)論
            
          # re: Spring Quartz如何動(dòng)態(tài)配置時(shí)間(3)[未登錄](méi)
          2009-07-27 16:37 | jim
          這位大哥,請(qǐng)問(wèn)你的問(wèn)題解決了嗎,我現(xiàn)在遇到同樣的需求,請(qǐng)問(wèn)如何實(shí)現(xiàn)  回復(fù)  更多評(píng)論
            
          <2008年10月>
          2829301234
          567891011
          12131415161718
          19202122232425
          2627282930311
          2345678

          生存或毀滅,這是個(gè)必答之問(wèn)題:是否應(yīng)默默的忍受坎苛命運(yùn)之無(wú)情打擊,還是應(yīng)與深如大海之無(wú)涯苦難奮然為敵,并將其克服。此二抉擇,究竟是哪個(gè)較崇高?

          常用鏈接

          留言簿(12)

          隨筆分類(43)

          相冊(cè)

          收藏夾(7)

          朋友的博客

          電子資料

          搜索

          •  

          積分與排名

          • 積分 - 302789
          • 排名 - 192

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 苗栗市| 榆树市| 南投县| 绥江县| 兴化市| 登封市| 山东省| 洛阳市| 汝州市| 法库县| 新营市| 西林县| 开江县| 中方县| 东港市| 油尖旺区| 海盐县| 迭部县| 钟山县| 高阳县| 北海市| 靖州| 临朐县| 蕉岭县| 成安县| 隆化县| 南康市| 湘潭县| 布拖县| 绿春县| 民丰县| 正定县| 格尔木市| 疏勒县| 和龙市| 铜山县| 永宁县| 龙门县| 安化县| 陈巴尔虎旗| 江都市|