Jersey,写入响应消息时发生 I/O 错误

Cha*_*het 7 java io jersey

我在我的项目中使用 SpringBoot 和 Jersey,我经常解决以下错误:

[ERROR - ServerRuntime$Responder - 2018-02-13 13:16:45,983] An I/O error has occurred while writing a response message entity to the container output stream.
org.glassfish.jersey.server.internal.process.MappableException: org.apache.catalina.connector.ClientAbortException: java.io.IOException: Broken pipe
        at org.glassfish.jersey.server.internal.MappableExceptionWrapperInterceptor.aroundWriteTo(MappableExceptionWrapperInterceptor.java:92)
        at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:162)
        at org.glassfish.jersey.message.internal.MessageBodyFactory.writeTo(MessageBodyFactory.java:1130)
        at org.glassfish.jersey.server.ServerRuntime$Responder.writeResponse(ServerRuntime.java:711)
        at org.glassfish.jersey.server.ServerRuntime$Responder.processResponse(ServerRuntime.java:444)
        at org.glassfish.jersey.server.ServerRuntime$Responder.process(ServerRuntime.java:434)
        at org.glassfish.jersey.server.ServerRuntime$2.run(ServerRuntime.java:329)
        at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271)
Run Code Online (Sandbox Code Playgroud)

结果是对我的客户端的 503 状态响应。你能解释一下为什么会发生这个错误吗?

谢谢

小智 7

这种错误通常发生在 servlet 将数据写回流中并且连接从客户端关闭时。这就像服务器发送一些数据可能是文件、字符串、字节等。但在客户端,就像浏览器关闭了连接一样,就像您关闭浏览器选项卡一样。它在服务器上发生了早期文件结束异常。