2012-02-19 66 views
2

我正在使用jetty服務器接收來自http客戶端的呼叫。流在程序結束之前關閉

我正在使用BufferedWriter對象編寫用於調試的日誌文件。

服務器始終運行以接收呼叫。

如何告訴程序只在服務器停止時關閉流(log_file.close)?

我不應該停止服務器,但在程序終止之前(例如,當我觸摸終止按鈕時)如何關閉該流文件?

+0

添加關閉線程如果您使用的BufferedWriter對象?在Jetty上的一些Web應用程序內? – hakyer 2012-02-19 08:42:07

+0

我在我的Startup類中使用它作爲類的一個對象(啓動包含我的主要方法,並且我在這個主目錄中初始化它:_logWriter = new BufferedWriter(new FileWriter(「log_file.txt」)); – 2012-02-19 08:44:49

+0

因此,if我正確地理解了你 - 你想要聽取其他進程是否被終止? – hakyer 2012-02-19 08:49:26

回答

3

如果您的代碼在Web應用程序(又名戰爭)中運行,您可以(並且實際上是最佳實踐)實施ServletContextListener並將其註冊到您的web.xml

contextInitialized中,您可以進行必要的init操作。

contextDestroyed您可以關閉該流。

3

如果您正在運行嵌入Jetty,那麼您有幾個選項。

您還沒有表明其碼頭的版本,所以我不能給你確切的它的代碼,但你的選擇是:

  • 註冊服務器中的「生命週期」的對象,並實施該關閉日誌文件的生命週期對象中的stop方法。 (使用類似addLifeCycleaddBean,這取決於你的Jetty版本)

  • 在JVM(Runtime.addShutdownHook

相關問題