我正在使用jetty服务器接收来自http客户端的电话。
我正在使用BufferedWriter对象来编写日志文件以进行调试。
服务器始终在运行,以便接听电话。
如何告诉程序只在服务器停止时关闭流(log_file.close)?
我不应该停止服务器,但是在程序终止之前(例如,当我触摸终止按钮时)如何在该点关闭流文件?
答案 0 :(得分:3)
如果您的代码在Web应用程序(也就是战争)中运行,您可以(实际上是最佳实践)实施ServletContextListener
并在web.xml
中注册它。
在contextInitialized
中,您可以进行必要的初始化操作。
在contextDestroyed
中,您可以关闭信息流。
答案 1 :(得分:3)
如果您正在运行Jetty嵌入式,那么您有几个选择。
您尚未指明哪个版本的Jetty,因此我无法为您提供确切的代码,但您的选择是:
在服务器中注册“LifeCycle”对象,并在该生命周期对象中实现关闭日志文件的stop
方法。 (使用类似addLifeCycle或addBean的内容,具体取决于您的Jetty版本)
在JVM(Runtime.addShutdownHook
)