当前位置: 首页 > 知识库问答 >
问题:

如何捕捉tomcat关机事件?

艾才良
2023-03-14

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

共有1个答案

沈华皓
2023-03-14

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

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

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

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

@WebListener
public class MyLifeCycleListener implements ServletContextListener {

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

      public void contextDestroyed(ServletContextEvent event) {
          //TODO ON DESTROY
      }
}
 类似资料:
  • 我在一个xml布局文件中声明了许多按钮,并将此布局用于一个片段。 令人失望的是,“onclickbutton”事件被捕捉在主机activity,而不是在我的片段。当然,在我的片段中,我可以手动解决这个问题,如下所示: 有没有显式的方法来处理片段中的onClickbutton事件?

  • 我的spring batch作业正在tomcat上运行,它挂起了。我试图关闭tomcat并再次启动它,但它仍然显示作业正在以“已启动”状态运行。 我需要在批处理作业中添加侦听器,它应该捕捉关闭tomcat的事件,然后杀死批处理作业的线程。 有没有实施这个的想法?

  • 在节点中。在js服务器上,捕获SIGTERM和捕获SIGINT有什么区别吗? 我认为进程不应该能够防止SIGINT关闭? 我是否能够捕获两个信号并阻止退出?我的实验表明答案是肯定的,但从我所读到的内容来看,SIGINT总是假设关闭一个进程。 或者我把SIGINT和SIGKILL混淆了?也许SIGKILL是我无法恢复的信号? 捕捉这些信号当然可以让我优雅地关机: 我想我把SIGINT和SIGKILL

  • 问题内容: 我有一个很大的数学表达式,必须动态创建。例如,一旦我已经解析了“东西”,结果就会像一个字符串:。 因此,为了计算该表达式的结果,我使用的是函数…… 这里的问题是,有时我会收到错误消息,说被零除,并且我不知道如何捕获该异常。我已经尝试过类似的事情: 要么: 但这行不通。因此,如何避免被零除的应用程序崩溃? 编辑: 首先,我想澄清一下:表达式是动态构建的,因此如果分母为零,我不能仅仅求值。

  • 我想捕获并忽略以下tomcat。因为我的程序没有必要注意这个。 知道如何以及在哪里可以捕捉到这个异常吗?以下是例外情况: