2014-10-27 64 views
0

我们有要求在应用程序维护之前暂停作业。我们在集群中使用Quartz 2.2.1。数据库是oracle。石英触发器状态在服务器启动时不存在

我开发了一个具有“暂停”功能的屏幕。我观察到“暂停”工作正常,直到我再次启动服务器。在我启动服务器的那一刻,QRTZ_TRIGGERS表的TRIGGER_STATE重置为“WAITING”。

任何人都可以提供一个提示。

非常感谢。

RGDS - 罗伊

回答

0

如果已设置overwriteExistingJobs = TRUE(请注意,默认值为false),那么每个服务器启动时,它加载从配置文件/触发工作,并取代现有的(即有相同的作业/触发器名称),因此覆盖触发器及其状态也与您的情况一样。

您可以尝试在SchedulerFactoryBean中设置overwriteExistingJobs = false。但是,这对您来说可能不方便,因为如果您曾在服务器中更改作业配置,则具有旧配置的现有作业将保留在数据库中。

<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> 
    .... 
    <property name="overwriteExistingJobs" value="false"/> 
    <property name="triggers"> 
     <list> 
      .... 
     </list> 
    </property> 
    .... 
</bean>