我正在使用jetty服務器接收來自http客戶端的呼叫。流在程序結束之前關閉
我正在使用BufferedWriter對象編寫用於調試的日誌文件。
服務器始終運行以接收呼叫。
如何告訴程序只在服務器停止時關閉流(log_file.close)?
我不應該停止服務器,但在程序終止之前(例如,當我觸摸終止按鈕時)如何關閉該流文件?
我正在使用jetty服務器接收來自http客戶端的呼叫。流在程序結束之前關閉
我正在使用BufferedWriter對象編寫用於調試的日誌文件。
服務器始終運行以接收呼叫。
如何告訴程序只在服務器停止時關閉流(log_file.close)?
我不應該停止服務器,但在程序終止之前(例如,當我觸摸終止按鈕時)如何關閉該流文件?
如果您的代碼在Web應用程序(又名戰爭)中運行,您可以(並且實際上是最佳實踐)實施ServletContextListener
並將其註冊到您的web.xml
。
在contextInitialized
中,您可以進行必要的init操作。
在contextDestroyed
您可以關閉該流。
如果您正在運行嵌入Jetty,那麼您有幾個選項。
您還沒有表明其碼頭的版本,所以我不能給你確切的它的代碼,但你的選擇是:
註冊服務器中的「生命週期」的對象,並實施該關閉日誌文件的生命週期對象中的stop
方法。 (使用類似addLifeCycle或addBean,這取決於你的Jetty版本)
在JVM(Runtime.addShutdownHook
)
添加關閉線程如果您使用的BufferedWriter對象?在Jetty上的一些Web應用程序內? – hakyer 2012-02-19 08:42:07
我在我的Startup類中使用它作爲類的一個對象(啓動包含我的主要方法,並且我在這個主目錄中初始化它:_logWriter = new BufferedWriter(new FileWriter(「log_file.txt」)); – 2012-02-19 08:44:49
因此,if我正確地理解了你 - 你想要聽取其他進程是否被終止? – hakyer 2012-02-19 08:49:26