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

13

我在我的项目中使用了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)

我的客户端收到了503状态响应。

您能解释一下为什么会出现这个错误吗?

谢谢。

2个回答

7

这种错误通常发生在servlet在将数据写回流并且客户端关闭连接时。就像服务器发送一些数据,可能是文件、字符串、字节等等...但在客户端(如浏览器)关闭连接时,就像您关闭了浏览器标签一样。这会导致服务器出现早期的文件结尾异常。


2

我曾经因为在调用结束时意外传递了一个空的响应而遇到了这个异常。你可以在第一个异常之后的“由于”部分中验证:

由于:org.eclipse.jetty.io.EofException: null


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接