我需要在Java Web应用程序停止或Tomcat停止时保存一些数据。这该怎么做呢? 编辑: 如果我使用JVM关闭挂钩,是否有任何缺点?
我需要在Java Web应用程序停止或Tomcat停止时保存一些数据。这该怎么做呢? 编辑: 如果我使用JVM关闭挂钩,是否有任何缺点?
在你的web.xml中使用实现了ServletContextListener接口的类:
<web-app>
<!-- Usual stuff here -->
<listener>
<listener-class>com.mycompany.MyClass</listener-class>
</listener>
</web-app>
除了leonm的回答外:
如果你正在使用Spring,你可以使用Spring的“生命周期管理”来实现类似的效果。例如,你可以在一个bean中的方法上注释@PreDestroy
,以便在容器关闭时自动调用它。这样,你就不需要把任何东西放到web.xml
中。
我建议使用ehcache来缓存这些信息。如果您使用ehcache的持久存储,那么当您再次启动Tomcat时,缓存的数据仍然可用。
实际上,这将问题委托给了ehcache,它针对这些类型的问题进行了优化。
@WebListener
注解可以让您获得此功能,无需编辑web.xml。请参阅BalusC提供的这个启发性答案。 - Basil Bourque