2010-07-20 38 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