在程序结束之前关闭流

时间:2012-02-19 08:15:49

标签: java jetty bufferedwriter

我正在使用jetty服务器接收来自http客户端的电话。

我正在使用BufferedWriter对象来编写日志文件以进行调试。

服务器始终在运行,以便接听电话。

如何告诉程序只在服务器停止时关闭流(log_file.close)?

我不应该停止服务器,但是在程序终止之前(例如,当我触摸终止按钮时)如何在该点关闭流文件?

2 个答案:

答案 0 :(得分:3)

如果您的代码在Web应用程序(也就是战争)中运行,您可以(实际上是最佳实践)实施ServletContextListener并在web.xml中注册它。

contextInitialized中,您可以进行必要的初始化操作。

contextDestroyed中,您可以关闭信息流。

答案 1 :(得分:3)

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

您尚未指明哪个版本的Jetty,因此我无法为您提供确切的代码,但您的选择是:

  • 在服务器中注册“LifeCycle”对象,并在该生命周期对象中实现关闭日志文件的stop方法。 (使用类似addLifeCycleaddBean的内容,具体取决于您的Jetty版本)

  • 在JVM(Runtime.addShutdownHook

  • 中添加关闭线程