ClientAbortException:java.net.SocketException:通过对等方重置连接:套接字写入错误

从数据库列中检索文件对象时,我经常收到以下错误。 我该如何解决这个问题?

May 8, 2009 3:18:14 PM org.apache.catalina.core.StandardHostValve status WARNING: Exception Processing ErrorPage[errorCode=404, location=/error.jsp] ClientAbortException: java.net.SocketException: Connection reset by peer: socket write error at org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:327) at org.apache.catalina.connector.OutputBuffer.flush(OutputBuffer.java:293) at org.apache.catalina.connector.Response.flushBuffer(Response.java:537) at org.apache.catalina.core.StandardHostValve.status(StandardHostValve.java:286) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:136) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684) at java.lang.Thread.run(Unknown Source) Caused by: java.net.SocketException: Connection reset by peer: socket write error at java.net.SocketOutputStream.socketWrite0(Native Method) at java.net.SocketOutputStream.socketWrite(Unknown Source) at java.net.SocketOutputStream.write(Unknown Source) at org.apache.coyote.http11.InternalOutputBuffer.realWriteBytes(InternalOutputBuffer.java:746) at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:433) at org.apache.coyote.http11.InternalOutputBuffer.flush(InternalOutputBuffer.java:304) at org.apache.coyote.http11.Http11Processor.action(Http11Processor.java:991) at org.apache.coyote.Response.action(Response.java:182) at org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:322) ... 13 more 

您的HTTP客户端断开连接

这可能有几个原因:

  • 响应请求花了太长时间,客户放弃了
  • 你用客户不理解的东西回复了
  • 最终用户实际上取消了请求
  • 发生网络错误
  • ……可能更多

您可以相当轻松地模拟行为:

 URL url = new URL("http://example.com/path/to/the/file"); int numberOfBytesToRead = 200; byte[] buffer = new byte[numberOfBytesToRead]; int numberOfBytesRead = url.openStream().read(buffer); 

您的日志表示ClientAbortException,当您的HTTP客户端断开与服务器的连接时发生这种情况,这发生在服务器关闭服务器套接字连接之前。

我在Google Cache的打开页面上遇到此错误。

我认为,缓存页面(客户端)在页面加载时断开连接

您可以使用filter上的try-catch 忽略此错误日志。

Windows防火墙可能会导致此exception,尝试禁用它或为端口甚至程序添加规则(java)