Java 在程序完成之前,流已关闭

Java 在程序完成之前,流已关闭,java,jetty,bufferedwriter,Java,Jetty,Bufferedwriter,我使用jetty服务器接收来自http客户端的呼叫 我正在使用BufferedWriter对象编写日志文件以进行调试 服务器始终在运行以接收呼叫 我如何告诉程序在服务器停止时只关闭流(log_file.close) 我不应该停止服务器,但在程序终止之前(例如,当我触摸终止按钮时),我如何才能在该点关闭流文件?如果您的代码在web应用程序(又名war)中运行,您可以(实际上这是一种最佳做法)实现ServletContextListener并在web.xml中注册它 在contextInitiali

我使用jetty服务器接收来自http客户端的呼叫

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

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

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


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

如果您的代码在web应用程序(又名war)中运行,您可以(实际上这是一种最佳做法)实现
ServletContextListener
并在
web.xml
中注册它

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


contextdestromed
中,您可以关闭流。

如果您正在运行Jetty embedded,那么您有两个选项

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

  • 在服务器中注册“LifeCycle”对象,并在该LifeCycle对象中实现关闭日志文件的
    stop
    方法。(根据您的Jetty版本,使用类似或的工具)

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


您在哪里使用BufferedWriter对象?在Jetty上的某个web应用程序中?我在我的Startup类中使用它作为类的对象(Startup包含我的main方法,我在这个main中初始化它:_logWriter=new BufferedWriter(new FileWriter(“log_file.txt”));那么,如果我没弄错的话-你想听听其他进程是否终止了吗?当服务器进程终止时,但问题是它是否与主进程(不是服务器的一部分)中创建和使用的Bufferedstream对象相关