Tomcat+Spring+Quartz Restart or shutdown error

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

以上是关于Tomcat+Spring+Quartz Restart or shutdown error的主要内容,如果未能解决你的问题,请参考以下文章

Spring整合quartz关闭,关闭Tomcat Servlet容器时内存泄漏

Spring quartz定时器问题!启动tomcat就执行了一次!

spring quartz定时任务集群环境下如何实现只在单个节点运行

spring quartz执行两次问题

Spring的quartz定时器重复执行二次的问题解决

sping+quartz定时任务的最简单实践