关闭 java Web 应用程序的钩子
2022-09-01 02:58:35
我需要在Java Web应用程序停止或tomcat停止时最好地保存一些数据。这怎么能做到呢?编辑:如果我使用jvm关闭钩子有什么缺点吗?
我需要在Java Web应用程序停止或tomcat停止时最好地保存一些数据。这怎么能做到呢?编辑:如果我使用jvm关闭钩子有什么缺点吗?
使用一个在 Web 中实现 ServletContextListener 的类.xml:
<web-app>
<!-- Usual stuff here -->
<listener>
<listener-class>com.mycompany.MyClass</listener-class>
</listener>
</web-app>
为什么要在关机期间专门执行此操作?你真的需要保存它(如“它绝对关键吗?”)还是你想(如“会很好,但我会没有它”)?
区别很重要 - 无论你尝试什么方法(servlet /上下文监听器,如其他答案或JVM关闭钩子所建议),都不能保证它实际上会被调用。
Servlet /上下文侦听器销毁事件仅在正常(正常)容器关闭期间或在应用程序重新加载期间触发。JVM关闭钩子也会在进程中断期间触发;然而,杀死一个过程(或切断功率)显然不会触发任何一个过程。