如何确保tomcat停止或重新启动后发生某些事情

如何确保tomcat停止或重新启动后发生某些事情,tomcat,jvm,Tomcat,Jvm,有时,tomcat重新启动会导致应用程序立即停止,以便我在oracle db中使用的数据保持一种错误状态。所以我想知道,一旦tomcat停止,是否有任何方法可以帮助处理状态。由于未知,实际事件发生在tomcat的停止过程上。我不知道如何确保tomcat停止时发生了什么。如果您正在进行正常的重启,您应该能够注册一个关机钩,并在服务器关闭应用程序之前让它运行 查看javadocs以获取更详细的信息: 您可以像这样添加关闭挂钩: Runtime.getRuntime().addShutdownHook

有时,tomcat重新启动会导致应用程序立即停止,以便我在oracle db中使用的数据保持一种错误状态。所以我想知道,一旦tomcat停止,是否有任何方法可以帮助处理状态。由于未知,实际事件发生在tomcat的停止过程上。我不知道如何确保tomcat停止时发生了什么。

如果您正在进行正常的重启,您应该能够注册一个关机钩,并在服务器关闭应用程序之前让它运行

查看javadocs以获取更详细的信息:

您可以像这样添加关闭挂钩:

Runtime.getRuntime().addShutdownHook(new Thread(new Runnable(){
    public void run() {
         // clean-up logic
    }
}));

如果你正在进行正常重启,你应该能够注册一个shutdownhook,并在服务器终止应用程序之前让它运行

查看javadocs以获取更详细的信息:

您可以像这样添加关闭挂钩:

Runtime.getRuntime().addShutdownHook(new Thread(new Runnable(){
    public void run() {
         // clean-up logic
    }
}));

也许您可以为tomcat应用程序注册LifecycleListener。当您的上下文被加载并在其关闭后立即调用生命周期侦听器


这里有一个更复杂的解释。您可能需要查看ServletContextListener接口的contextInitialized和contextDestroyed方法。

也许您可以为tomcat应用程序注册LifecycleListener。当您的上下文被加载并在其关闭后立即调用生命周期侦听器


这里有一个更复杂的解释。您可能想看看ServletContextListener接口的contextInitialized和contextDestroyed方法。

谢谢。我还有一个问题:tomcat何时停止。如果通过thread.interrupt关闭所有线程。如果是的话。我可以判断中断的状态以确保完成某些事情?我不确定我是否完全理解你的问题。有几种不同的方法可以停止线程。Kill-9与优雅地关闭服务器非常不同。这个答案提供了大量的细节:。也许我没有解释清楚。我的意思是当停止jvm时,对已经运行的线程有什么影响。非常感谢你!谢谢我还有一个问题:tomcat何时停止。如果通过thread.interrupt关闭所有线程。如果是的话。我可以判断中断的状态以确保完成某些事情?我不确定我是否完全理解你的问题。有几种不同的方法可以停止线程。Kill-9与优雅地关闭服务器非常不同。这个答案提供了大量的细节:。也许我没有解释清楚。我的意思是当停止jvm时,对已经运行的线程有什么影响。非常感谢你!谢谢我还有一个问题:tomcat何时停止。如果通过thread.interrupt关闭所有线程。如果是的话。我可以判断中断状态以确保完成某些操作?在contextDestroyed方法上,您可以实际停止线程。您只需跟踪在contextInitialized中启动的线程即可。谢谢。我还有一个问题:tomcat何时停止。如果通过thread.interrupt关闭所有线程。如果是的话。我可以判断中断状态以确保完成某些操作?在contextDestroyed方法上,您可以实际停止线程。您只需跟踪在contextInitialized中启动的线程。