2

我正在使用码头服务器接收来自 http 客户端的呼叫。

我正在使用 BufferedWriter 对象编写用于调试的日志文件。

服务器始终在运行以接收呼叫。

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

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

4

2 回答 2

3

如果您的代码在 Web 应用程序(又名 war)中运行,您可以(这实际上是最佳实践)ServletContextListener在您的web.xml.

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

contextDestroyed您可以关闭流。

于 2012-02-19T08:47:32.450 回答
3

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

您还没有指明 Jetty 的哪个版本,所以我无法为您提供确切的代码,但您的选择是:

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

  • 在 JVM 中添加关闭线程 ( Runtime.addShutdownHook)

于 2012-02-20T09:11:37.320 回答