【发布时间】:2012-07-11 16:33:06
【问题描述】:
我有一个长时间运行的 cpu 和数据库密集型线程(以低优先级运行),可以由我的 tomcat 应用程序根据管理员请求触发。
我为这个线程使用了一个关闭钩子,这样如果应用程序被强制停止,它可以在退出之前清理数据库状态。完美地在独立模式下工作,在 Eclipse 控制台中使用 control-C 和取消。
但是当在tomcat下运行的时候,当我做了一个:
$CATALINA_HOME/bin/shutdown.sh
我通过调试日志验证了我的 servlet contextDestroyed 消息是由 tomcat 发送的,但对于这个线程,消息无法阻止它,重要的是我的关闭挂钩永远不会触发。
我注意到其他人说使用 contextDestroyed 消息,但这对我不起作用,而且一些问题和答案暗示关闭挂钩在 tomcat 中适用于他们。
我使用的是 tomcat 6.0.35。
【问题讨论】: