流在程序结束之前关闭

问题描述:

我正在使用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

如果您的代码在Web应用程序(又名战争)中运行,您可以(并且实际上是最佳实践)实施ServletContextListener并将其注册到您的web.xml

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

contextDestroyed您可以关闭该流。

如果您正在运行嵌入Jetty,那么您有几个选项。

您还没有表明其码头的版本,所以我不能给你确切的它的代码,但你的选择是:

  • 注册服务器中的“生命周期”的对象,并实施该关闭日志文件的生命周期对象中的stop方法。 (使用类似addLifeCycleaddBean,这取决于你的Jetty版本)

  • 在JVM(Runtime.addShutdownHook