我有一个静态初始化块,我将DB中的数据读入某些变量,在应用程序的生命周期内更新该数据。以定期的间隔将其保存到DB,但是当应用程序意外/突然销毁/取消部署时,我想将变量的当前状态写回DB。
如何在Java中使用destroy触发器实现它?
@PreDestroy
注释怎么样,对我的案例有用吗?
答案 0 :(得分:2)
假设这是一个Web应用程序,您可以实现并注册ServletContextListener
。部署时将调用其contextInitialized
方法,并且在取消部署时将调用contextDestroyed
一次。
但是,如果容器被非理性地终止,contextDestroyed
仍然可能无法运行。
有关设置一个的示例,请参阅this page。