代码之家  ›  专栏  ›  技术社区  ›  Fazal

由于守护进程线程,Tomcat没有完全关闭

  •  3
  • Fazal  · 技术社区  · 14 年前

    我们运行我们的web应用程序,然后启动一些线程进行后台工作,还可以运行Quartz。 当我尝试关闭tomcat(在linux上使用shell脚本)时,我总是得到一个错误消息:由于守护进程线程和Quartz线程,关闭tomcat失败。

    对于这种情况,有没有标准的方法来关闭tomcat?

    3 回复  |  直到 14 年前
        1
  •  5
  •   extraneon    14 年前

    现在要找到可能的答案(如果您使用Spring),请查看 this thread destroy 子句,以便它可以干净地关闭。

    否则Servlet监听器(我认为ServletContext监听器,但是已经有一段时间了……)可以检测到关闭,您可以手动关闭Quartz。

        2
  •  3
  •   extraneon    14 年前

    不是答案,但很高兴知道:

    JVM不为守护进程线程提供任何关闭保证。他们只是停下来。最后,没有垃圾收集,什么都没有。

        3
  •  0
  •   Fazal    14 年前

    最后我终于拿到了。问题不在于tomcat,而是应用程序初始化的方式。我们按照servlet规范将应用程序(启动这些线程的类)的初始化移动到一个侦听器中,最后加载servlet,然后首先卸载,其中侦听器首先加载,最后从服务器上卸载。 extraneon提供的Spring链接非常有用