关于Tomcat热部署时线程未正常中止问题

我们习惯性的Tomcat热部署, 就是覆盖原war包,过不多久Tomcat发现war包变化,开始undeploy后再deploy。 在此过程注意看日志,其实有不少SERVE的错误,大致是进程未中止,可能引起内存泄漏。以前只是数据库连接的进程未中止,出错也不影响。现在使用JMS插件,运行过程中连接ActiveMQ,再次热部署,原有的连接不中断,消息就被原有连接取走,热部署后生成的连接反而取不到消息。 因此上述进程未中止的问题就影响到业务了。网上两种解决方案:

  1. 停止-启动Tomcat,不使用热部署。 直接stop后, 可能还需要ps看下tomcat是否完全中止, 否则效果就有如进行了一次热部署。简单可靠的是kill -9杀进程。

  2. 写一个ServletContextListener,在其contextDestroyed 中进行资源的释放操作。


请问下波总,jfinal中有无已有的功能 处理此类问题?

评论区

shanmine

2018-10-08 13:33

我也遇到了同样的问题,比如一个socket通讯占用了90端口,热部署的后socket通讯无法建立连接等。