【问题标题】:how to catch the event of shutting down of tomcat?如何捕捉到关闭tomcat的事件?
【发布时间】:2014-09-07 04:49:59
【问题描述】:

我想要的是每次tomcat服务器启动时启动一个线程。为此我需要捕获关闭tomcat的事件。我该怎么做?我尝试使用会话来做到这一点,但有时甚至会话关闭并重新启动 tomcat 后仍然存在?我有什么选择?

【问题讨论】:

  • 你想做什么?
  • 如果你想在 on startup 做一些事情,你为什么要寻找 shutdown 事件?这对我来说没有意义。这似乎是XY Problem
  • 有时会话甚至会持续我不这么认为。你如何验证它?
  • 无法获取tomcat关闭进程,但是当你的web应用被卸载或关闭时,你可以使用ServletContextListener获取该进程。
  • 我想要做的是在启动时通过一个jsp页面运行一个线程..但我不希望每次访问jsp页面时都有该线程的多个实例。因为我认为最好解决方案是仅在 tomcat 启动时运行线程..如果我知道 tomcat 已关闭并再次启动,那么我必须启动线程..这就是问题的原因..

标签: java jsp tomcat


【解决方案1】:

您可以尝试通过这种方式捕获 JVM 关闭事件:

    Runtime.getRuntime().addShutdownHook(new Thread() {

        public void run() {
            System.out.println("BYE BYE");
        }
    });

另一种选择是使用 @WebListener 注解来实现 ServletContextListener。这种情况下不需要xml配置。

@WebListener
public class MyLifeCycleListener implements ServletContextListener {

      public void contextInitialized(ServletContextEvent event) {
          //TODO ON START
      }

      public void contextDestroyed(ServletContextEvent event) {
          //TODO ON DESTROY
      }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-19
    • 1970-01-01
    • 2014-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多