我正在使用码头服务器接收来自 http 客户端的呼叫。
我正在使用 BufferedWriter 对象编写用于调试的日志文件。
服务器始终在运行以接收呼叫。
我如何告诉程序仅在服务器停止时关闭流(log_file.close)?
我不应该停止服务器,但是在程序终止之前(例如,当我触摸终止按钮时)我该如何关闭流文件?
我正在使用码头服务器接收来自 http 客户端的呼叫。
我正在使用 BufferedWriter 对象编写用于调试的日志文件。
服务器始终在运行以接收呼叫。
我如何告诉程序仅在服务器停止时关闭流(log_file.close)?
我不应该停止服务器,但是在程序终止之前(例如,当我触摸终止按钮时)我该如何关闭流文件?
如果您的代码在 Web 应用程序(又名 war)中运行,您可以(这实际上是最佳实践)ServletContextListener
在您的web.xml
.
在contextInitialized
您可以进行必要的初始化操作。
在contextDestroyed
您可以关闭流。
如果您正在运行嵌入式 Jetty,那么您有几个选择。
您还没有指明 Jetty 的哪个版本,所以我无法为您提供确切的代码,但您的选择是:
在服务器中注册一个“生命周期”对象,并stop
在该生命周期对象中实现一个方法来关闭您的日志文件。(使用addLifeCycle或addBean 之类的东西,具体取决于您的 Jetty 版本)
在 JVM 中添加关闭线程 ( Runtime.addShutdownHook
)