在Tomcat关闭之前触发执行持久性提交的操作

时间:2010-09-08 12:29:39

标签: java tomcat

我们最近更改了系统,以便将最新数据保存在内存中,而不是写入数据库。 (当I / O相对空闲时,它将被写入数据库)

但是,现在我们陷入困境,如果在需要关闭的情况下,可能还有一些数据尚未写入数据库。

无论如何在Tomcat中触发调用servlet方法或某种类型的操作来在tomcat发出“shutdown”时执行操作?我们正在使用以下设置:

操作系统:Windows Server 2008

Tomcat:5.5.30

知道如何执行上述操作吗?

注意:目前,我们从windows服务中关闭了tomcat。

2 个答案:

答案 0 :(得分:1)

正如其他人所指出的那样,Servlet.destroy()看起来可能就是你想要的。

  

public void destroy()

     

由servlet容器调用,以向servlet指示servlet   正在停止服务。这个   方法只调用一次所有线程   在servlet的服务方法中   已经退出或超时后   已经过去了。在servlet之后   容器调用这个方法,它会   不再打电话给服务方法   这个servlet。

     

此方法为servlet提供了清理任何资源的机会   正在举行(例如,   内存,文件句柄,线程)和   确保任何持久状态   与servlet同步   记忆中的当前状态。

这符合您的要求吗?您还可以实施context listener

  

处理Servlet生命周期事件

     

您可以监控并回应事件   servlet的生命周期定义   方法获取的侦听器对象   生命周期事件发生时调用。   要使用这些侦听器对象,   必须定义监听器类和   指定监听器类。

也有例子。

答案 1 :(得分:0)