2010-07-20 56 views
4

我有一份工作 「digestJob」 一cronTrigger:石英春CronTrigger發射更多的時間比配置

<bean id="digestCronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> 
    <property name="jobDetail" ref="digestJob" /> 
    <property name="cronExpression" value="0 35 15 * * ?" /> 
</bean> 

這裏是我的SchedulerFactoryBean配置:

<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> 
     <property name="triggers"> 
      <list> 
       <ref bean="digestCronTrigger" /> 
      </list> 
     </property> 
    </bean> 

的問題是,在digestCronTrigger應該每天下午5:35被開除,但在特定時間正在被髮射。但是,當我使用SimpleTrigger:

<bean id="digestTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean"> 
     <property name="jobDetail" ref="digestJob" /> 
     <property name="startDelay" value="0" /> 
     <property name="repeatInterval" value="10000" /> 
    </bean> 

一切正常,觸發器每10秒觸發一次。爲什麼digestCronTrigger被解僱兩次?我的cron表達有什麼問題,或者是否有我缺少的任何屬性?任何幫助都感激不盡。

+1

對於5:35 PM正確cron表達式將是(0 35 17 * *?),除此之外,cron表達式是完美的。 – 2010-07-20 18:17:08

回答

3

我張貼same question at springsource forums在那裏我得到的幫助找出問題背後的原因: 我加載應用程序上下文的兩倍。後來我從this post中發現如何避免兩次加載上下文。現在事情工作正常。

+0

我不在乎這個評論是否會被標記爲「太嘮叨」,而且我爲自己提出了很多標誌而反對自己的誠信。你拯救了我的一天。 – reallynice 2014-07-17 12:41:18

+0

工匠,線程以帖子結尾「我有這個確切的問題,你能發佈你的解決方案嗎?謝謝。」你最終的解決方案是什麼? – 2016-06-04 09:40:48

0

試試這個:

<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> 
     <property name="triggers"> 
      <list> 
       <ref bean="cronTrigger" /> 
      </list> 
     </property> 
    </bean> 

    <bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> 
     <property name="targetObject" ref="actionObject" /> 
     <property name="targetMethod" value="actionMethod" /> 
    </bean> 

    <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> 
     <property name="jobDetail" ref="jobDetail"/> 
     <property name="cronExpression" value="0 15 17 * * ?"/> 
    </bean> 
1

如果您在啓動應用程序時正在創建觸發器,並且正在quartz.properties文件中使用數據源,也會發生這種情況。每次啓動服務器時,它都會爲QRTZ_CRON_TRIGGERSQRTZ_TRIGGERS表寫入新的觸發器,並在每次重新啓動時使用它們全部。

+0

你如何避免這種情況? – 2017-02-01 10:10:12

+1

我通過確保我的工作和我的觸發器有一個名字來避免這種情況。如果您未設置此屬性,則每次啓動應用程序時都會添加新的觸發器。 – 2017-02-01 17:54:07