在我的
Spring应用程序中,我使用Schedulerfactorybean与Quartz集成.我们将要集群的Tomcat实例,因此我想拥有一个集群的Quartz环境,以便相同的作业不会在不同的Web服务器上同时运行.
为此,我的app-context.xml如下所示:
<bean class="org.springframework.scheduling.quartz.Schedulerfactorybean"> <property name="triggers"> <list> <ref bean="cronTrigger"/> <ref bean="simpleTrigger" /> </list> </property> <property name="dataSource" ref="dataSource"/> <property name="overwriteExistingJobs" value="true"/> <!-- found in applicationContext-data.xml --> <property name="applicationContextSchedulerContextKey" value="applicationContext"/> <property name="quartzProperties"> <props> <prop key="org.quartz.scheduler.instanceName">SomeBatchScheduler</prop> <prop key="org.quartz.scheduler.instanceId">AUTO</prop> <prop key="org.quartz.jobStore.misfireThreshold">60000</prop> <!--<prop key="org.quartz.jobStore.class">org.quartz.simpl.RAMJobStore</prop>--> <prop key="org.quartz.jobStore.class">org.quartz.impl.jdbcjobstore.JobStoreTX</prop> <prop key="org.quartz.jobStore.driverDelegateClass">org.quartz.impl.jdbcjobstore.StdJDBCDelegate</prop> <prop key="org.quartz.jobStore.tablePrefix">QRTZ_</prop> <prop key="org.quartz.jobStore.isClustered">true</prop> <prop key="org.quartz.threadPool.class">org.quartz.simpl.SimpleThreadPool</prop> <prop key="org.quartz.threadPool.threadCount">25</prop> <prop key="org.quartz.threadPool.threadPriority">5</prop> </props> </property> </bean>
一切都很好,除了当我尝试删除或更改触发器,然后重新启动我的应用程序,旧的触发器仍然保留在数据库中,并仍然运行.我不想要这个,我只是希望在应用程序停止(或重新启动)时删除它们.我将overwriteExistingJobs属性的值设置为true,因为我以为这是它所做的.
有任何想法吗?所有我想使用DB是集群,而不是任何类型的持久性.