tomcat中 SchedulerFactoryBean 不能随tomcat关闭而关闭
时间: 2023-06-29 19:13:13 浏览: 257
quartz 随tomcat启动执行一次
4星 · 用户满意度95%
在Spring中使用SchedulerFactoryBean创建的定时任务调度器,如果不能随Tomcat关闭而关闭,可能是因为在Spring配置文件中没有配置SchedulerFactoryBean的销毁方法。
在Spring配置文件中,可以通过配置一个方法,来销毁SchedulerFactoryBean创建的定时任务调度器。具体步骤如下:
1. 在Spring配置文件中,为SchedulerFactoryBean配置一个销毁方法,例如:
```
<bean id="schedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<!-- 其他配置 -->
<property name="waitForJobsToCompleteOnShutdown" value="true"/>
<property name="autoStartup" value="false"/>
<property name="quartzProperties">
<props>
<!-- 其他配置 -->
</props>
</property>
<property name="jobFactory">
<bean class="org.springframework.scheduling.quartz.SpringBeanJobFactory">
<property name="applicationContextSchedulerContextKey" value="applicationContext"/>
</bean>
</property>
<property name="jobDetails">
<list>
<!-- 其他配置 -->
</list>
</property>
<property name="triggers">
<list>
<!-- 其他配置 -->
</list>
</property>
<destroy-method="destroy"/>
</bean>
```
2. 在SchedulerFactoryBean所在的类中,定义一个销毁方法destroy(),用于销毁定时任务调度器,例如:
```
public class SchedulerFactoryBeanTest {
private SchedulerFactoryBean schedulerFactoryBean;
public void setSchedulerFactoryBean(SchedulerFactoryBean schedulerFactoryBean) {
this.schedulerFactoryBean = schedulerFactoryBean;
}
public void destroy() throws SchedulerException {
schedulerFactoryBean.destroy();
}
}
```
通过以上配置,可以在Tomcat关闭时,自动执行SchedulerFactoryBean的销毁方法,从而关闭定时任务调度器。
阅读全文