我们运行我们的web应用程序,我们启动一些线程作为后台工作,也启动Quartz。当我尝试关闭tomcat (在linux上使用shell脚本)时,我总是收到错误消息,说由于守护进程线程和Quartz线程导致无法关闭tomcat。我们已经尝试了不同的方法来关闭我们的线程(退出run方法),但是我们依赖于类的几个静态变量来做这件事,当我关闭的监听器得到一个回调时,这些变量就变成了null
在这种情况下,有没有标准的方法来关闭tomcat?
发布于 2010-09-29 01:58:07
现在,对于可能的答案(如果您使用Spring),请查看this thread。如果您使用Spring,那么可以在Quartz的spring配置中添加一个显式的destroy子句,这样它就可以干净利落地关闭。
或者是Servlet侦听器(我认为是ServletContext侦听器,但已经有一段时间了……)可以检测关闭,您可以手动关闭Quartz。
发布于 2010-09-29 01:53:40
不是答案,但很高兴知道:
JVM不为守护线程提供任何关机保证。他们就会停下来。不,最后,没有垃圾回收,什么都没有。
发布于 2010-09-29 09:12:38
FInally,我能够得到它。问题不是tomcat,而是我们的应用程序起诉Initialize的方式。按照servlet规范,我们将应用程序(启动这些线程的类)的初始化移到了侦听器中,servlet是最后加载和卸载的,其中侦听器首先加载,最后从服务器卸载。extraneon提供的Spring链接非常有用
https://stackoverflow.com/questions/3815587
复制相似问题