处理tomcat停止

时间:2014-01-13 10:40:29

标签: java tomcat7 exchangewebservices shutdown-hook

我们使用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分钟后关闭。它对网站来说还是太长了。

2 个答案:

答案 0 :(得分:0)

如果你杀了java proccess shutdown hook肯定不行。因此 - 你不能以某种常见的方式处理这种情况。

但是,只要想想停止服务器时关闭连接的原因是什么? 服务器被杀后哪些资源保持打开状态?

我们有两个选择。

  1. 您想要关闭的资源是JVM对象。当您杀死JVM时 - 该对象死亡。这里没有什么可以关闭的。
  2. 您想要关闭的资源是持久的。然后 - 你为什么要关闭它?只需在新部署中重复使用。

答案 1 :(得分:0)

如果你的Tomcat没有停止,可能还有另一个永无止境的线程还活着。所以你应该先在关机钩子里停止那个线程。

我相信使用ServletContextListener比“addShutdownHook”更好。