在http协议处理程序暂停之前,Tomcat关闭挂钩

时间:2013-11-18 21:55:34

标签: java tomcat

我想知道是否有办法在关机过程中暂停http协议处理程序之前,使用tomcat注册'sh​​utdown hook'。

我有一个servlet,它将'status-ok'报告给负载均衡器,它被设置为每5秒轮询一次,我的目的是添加一个关闭应用程序之前发生的关闭钩子(包括事务管理器, spring,tomcat http协议处理程序等)。

目标只是让servlet返回'关闭',然后暂停5秒以上,以便让负载均衡器有足够的时间来实现即将发生的事情,然后让正常的关机过程发生。

我已经尝试过ServletContextListener,看起来tomcat实际上会在它到达我之前暂停http协议监听器,这意味着我已经来不及有效了。

干杯

1 个答案:

答案 0 :(得分:0)

在浏览完tomcat的doumentation之后,似乎没有办法通过关闭钩子实现这一点。作为问题的解决方案,我决定创建一个从我们的部署脚本调用的Web服务,它基本上告诉应用程序即将关闭,这会触发servlet向负载均衡器报告它不可用。部署脚本在继续关闭应用程序之前等待x时间,留下足够的时间来完成整个过程。

由于id更喜欢将其作为标准关闭机制的一部分,因此这种做法稍微复杂一些,而且不够优雅,但这样才能解决问题。