我们使用Exchange服务器获取电子邮件并打开连接30分钟,然后在接下来的30分钟内自动重新打开。但是当我们想要部署新的war文件并停止tomcat服务时,连接不会在连接期间没有结束(30分钟)时关闭。因此,此间隔无法启动tomcat服务。 我尝试使用像这样的关机钩子来处理服务器停止
Runtime.getRuntime().addShutdownHook(new Thread(new Runnable(){
public void run() {
connection.close();
}
}));
但它不起作用。 还有其他方法可以关闭连接吗?
与交换服务器的连接是新线程。 Tomcat 7。
我们也希望以任何方式处理(关闭连接)停止tomcat。
P.S。抱歉我的英文。
更新:我发现bean的destroy方法执行,但连接在1-2分钟后关闭。它对网站来说还是太长了。
答案 0 :(得分:0)
如果你杀了java proccess shutdown hook肯定不行。因此 - 你不能以某种常见的方式处理这种情况。
但是,只要想想停止服务器时关闭连接的原因是什么? 服务器被杀后哪些资源保持打开状态?
我们有两个选择。
答案 1 :(得分:0)
如果你的Tomcat没有停止,可能还有另一个永无止境的线程还活着。所以你应该先在关机钩子里停止那个线程。
我相信使用ServletContextListener比“addShutdownHook”更好。