2010-09-08 81 views
0

我們最近更改了我們的系統,以將最新數據保留在內存中而不是寫入數據庫。 (當I/O相對空閒時,它將被寫入數據庫)在Tomcat關閉之前觸發一個操作來執行持久性提交

但是,現在如果在需要關閉的情況下,可能會有一些數據尚未寫入數據庫。

Tomcat有沒有觸發一個調用servlet方法或某種類型來執行操作時,「關機」是問題的tomcat?我們使用以下設置:

操作系統:Windows Server 2008

Tomcat的:30年5月5日

任何想法如何執行上述?

注意:目前,我們從Windows服務關閉了tomcat。

+0

HTTPServlet.destroy()? – lucas1000001 2010-09-08 12:40:21

+0

我以爲每次http請求完成後都會調用destroy()? – Reusable 2010-09-08 12:42:26

+0

哦,你好!你是對的!我應該正確閱讀文檔! – Reusable 2010-09-08 12:46:27

回答

1

像其他人一樣指出,看起來像Servlet.destroy()可能是你想要的。

public void destroy()

由servlet容器調用以指示該servlet 正在退出服務的servlet。只有在servlet的服務方法 內的所有線程 已退出或在超時期限 過去之後纔會調用此方法。在容器調用這個方法後, 不會再在這個servlet上調用 服務方法。

此方法使servlet的任何持久狀態 與servlet的 當前狀態同步的機會來清理任何資源 正在舉行的(例如, 內存,文件句柄,線程)和 確保在記憶中。

這是否符合您的要求?您也可以實現context listener

處理Servlet的生命週期事件

可以監視和反應事件 一個servlet的生命週期定義 監聽的對象,它的方法獲得 調用時的生活發生循環事件。 要使用這些偵聽器對象,您必須定義偵聽器類,並且 指定偵聽器類。

還有一些例子。

相關問題