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