Quartz触发器状态不会在服务器启动时持久存在

时间:2014-10-27 11:01:27

标签: quartz-scheduler

我们要求在应用程序维护之前暂停作业。我们在集群中使用Quartz 2.2.1。数据库是oracle。

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

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

提前多多感谢。

Rgds - Roy

1 个答案:

答案 0 :(得分: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>