Tomcat+Spring+Quartz Restart or shutdown error

环境描述

Intellij Idea 14.1.7

Tomcat 6.0.48

Spring 2.5.6.SEC01

Quartz 1.8.5

问题描述

在 Intellij Idea 中首次可以正常启动 Tomcat 和 Web 应用,但是在 Intellij Idea 中执行重启的时候,控制台中就会包以下的错误,导致无法正常重启或者关闭,必须要启动任务管理器, 强制杀调 java.exe 进程才行。

严重: The web application [] appears to have started a thread named [DefaultQuartzScheduler_QuartzSchedulerThread] but has failed to stop it. This is very likely to create a memory leak.

解决方案

引起该问题的原因是项目中添加了 Quartz 相关的 jar 包,在Web应用启动的时候,会在后台生成相应的线程池和正在运行的后台线程。Web 应用重启或者停止的时候,对应的线程无法关闭,导致整个应用挂起。

为了避免该问题的发生,需要在 web.xml  添加 Quartz 的监听

<!-- Quartz -->

<listener>

   <listener-class>org.quartz.ee.servlet.QuartzInitializerListener</listener-class>

</listener>

参考资料

【Quartz 官方文档 How-To: Shutting Down a Scheduler】

http://www.quartz-scheduler.org/documentation/quartz-2.x/cookbook/ShutdownScheduler

【Stackoverflow tomcat + spring + quartz = shutdown error】

https://stackoverflow.com/questions/28164312/tomcat-spring-quartz-shutdown-error

时间: 2024-11-09 17:09:01

Tomcat+Spring+Quartz Restart or shutdown error的相关文章

【微信】微信获取TOKEN,以及储存TOKEN方法,Spring quartz让Token永不过期

官网说明 access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token.开发者需要进行妥善保存.access_token的存储至少要保留512个字符空间.access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效. 公众平台的API调用所需的access_token的使用及生成方式说明: 1.为了保密appsecrect,第三方需要一个access_token获取和刷新的中控服务器.而其他业务逻辑服务器所

spring quartz 分布式任务计划

通过maven管理的spring mvc工程,且已经成功连接数据库. 数据库表结构 /*Table structure for table `qrtz_calendars` */ DROP TABLE IF EXISTS `qrtz_calendars`; CREATE TABLE `qrtz_calendars` ( `SCHED_NAME` varchar(120) NOT NULL, `CALENDAR_NAME` varchar(200) NOT NULL, `CALENDAR` blo

spring+quartz报错:Table &#39;BANKSTEELERP_OLD.QRTZ_TRIGGERS&#39; doesn&#39;t exist

spring3.2.8 + quartz2.2.1配置到application.xml中 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'startQuertz' defined in class path resource [application.xml]: Invocation of init method failed; nested exception is

基于spring+quartz的分布式定时任务框架

http://www.cnblogs.com/aaronfeng/p/5537177.html 问题背景 我公司是一个快速发展的创业公司,目前有200人,主要业务是旅游和酒店相关的,应用迭代更新周期比较快,因此,开发人员花费了更多的时间去更=跟上迭代的步伐,而缺乏了对整个系统的把控 没有集群之前,公司定时任务的实现方式 在初期应用的访问量并不是那么大,一台服务器完全满足使用,应用中有很多定时任务需要执行 有了集群之后,公司定时任务实现的方式 随着用户的增加,访问量也就随之增加,一台服务器满足不了

spring quartz使用多线程并发“陷阱”(转)

定义一个job:ranJob,设置每秒执行一次,设置不允许覆盖并发执行 <bean id="rankJob" class="com.chinacache.www.logstat.job.RankJob" /> <bean id="rankJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean&q

[Spring] - Quartz定时任务 - Annotation

Spring + Quartz可以使用annoation方式: 1.AppJob类: package com.my.quartz.testquartz1; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; @Component public class AppJob { // @Scheduled(fixedDelay=1000)

Spring+quartz集群配置,Spring定时任务集群,quartz定时任务集群

Spring+quartz集群配置,Spring定时任务集群,quartz定时任务集群 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 蕃薯耀 2016年7月7日 09:06:09 星期四 http://fanshuya

Spring+quartz 实现定时任务job集群配置

为什么要有集群定时任务? 因为如果多server都触发相同任务,又同时执行,那在99%的场景都是不适合的.比如银行每晚24:00都要汇总营业额.像下面3台server同时进行汇总,最终计算结果可能是真实结果的3倍,那对银行来说是无法想象的,完全不可接受. 集群定时任务工作原理 所以为了解决以上问题,每个server把将要及正在运行的job所有状态都即时同步到中央数据库,然后再次触发调用时从数据库中分析是否已有别的server正在运行相同job (同名同定时时间点的job属于相当job),如果相同

spring+quartz(各种版本兼容性问题)

踩过的坑 遇到CronTriggerFactoryBean class notfound 原因是使用3.1以下的版本,我使用的是3.06发现spring-context-support jar文件下面,压根没有这个类,改成org.springframework.scheduling.quartz.CronTriggerBean可以. 遇到JobDetail class notfound 原因是使用2.0以上版本,因为这些版本中,JobDetail 是interface,具体原因的话,可能作者觉得