关闭 java Web 应用程序的钩子

2022-09-01 02:58:35

我需要在Java Web应用程序停止或tomcat停止时最好地保存一些数据。这怎么能做到呢?编辑:如果我使用jvm关闭钩子有什么缺点吗?


答案 1

使用一个在 Web 中实现 ServletContextListener 的类.xml:

<web-app>
    <!-- Usual stuff here -->
    <listener>
        <listener-class>com.mycompany.MyClass</listener-class>
    </listener>
</web-app>

答案 2

为什么要在关机期间专门执行此操作?你真的需要保存它(如“它绝对关键吗?”)还是你想(如“会很好,但我会没有它”)?

区别很重要 - 无论你尝试什么方法(servlet /上下文监听器,如其他答案或JVM关闭钩子所建议),都不能保证它实际上会被调用。

Servlet /上下文侦听器销毁事件仅在正常(正常)容器关闭期间或在应用程序重新加载期间触发。JVM关闭钩子也会在进程中断期间触发;然而,杀死一个过程(或切断功率)显然不会触发任何一个过程。


推荐