我们最近更改了系统,以便将最新数据保存在内存中,而不是写入数据库。 (当I / O相对空闲时,它将被写入数据库)
但是,现在我们陷入困境,如果在需要关闭的情况下,可能还有一些数据尚未写入数据库。
无论如何在Tomcat中触发调用servlet方法或某种类型的操作来在tomcat发出“shutdown”时执行操作?我们正在使用以下设置:
操作系统:Windows Server 2008
Tomcat:5.5.30
知道如何执行上述操作吗?
注意:目前,我们从windows服务中关闭了tomcat。
答案 0 :(得分:1)
正如其他人所指出的那样,Servlet.destroy()
看起来可能就是你想要的。
public void destroy()
由servlet容器调用,以向servlet指示servlet 正在停止服务。这个 方法只调用一次所有线程 在servlet的服务方法中 已经退出或超时后 已经过去了。在servlet之后 容器调用这个方法,它会 不再打电话给服务方法 这个servlet。
此方法为servlet提供了清理任何资源的机会 正在举行(例如, 内存,文件句柄,线程)和 确保任何持久状态 与servlet同步 记忆中的当前状态。
这符合您的要求吗?您还可以实施context listener:
处理Servlet生命周期事件
您可以监控并回应事件 servlet的生命周期定义 方法获取的侦听器对象 生命周期事件发生时调用。 要使用这些侦听器对象, 必须定义监听器类和 指定监听器类。
也有例子。
答案 1 :(得分:0)
ServletContextListener是应该做的伎俩
http://download.oracle.com/javaee/1.3/api/javax/servlet/ServletContextListener.html
来自PetStore演示的示例代码
http://java.sun.com/j2ee/tutorial/1_3-fcs/examples/src/web/bookstore1/listeners/ContextListener.java