Tomcat抛出异常:ClientAbortException: java.net.SocketException: Connection

在做一个小网站的时候,写了一个通过servlet实现文件下载功能的页面。当我点击超级练级,弹出下载对话框,点击保存正常下载,不会出现任何问题,当我我点击取消,服务器端就出现如下提示:

ClientAbortException: java.net.SocketException: Connection reset by peer: socket write error
at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:366)
at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:433)
at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:348)
at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:392)
at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:381)
at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:88)
at com.lab.servlet.FileDownload.doGet(FileDownload.java:92)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
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 H t t p 11 C o n n e c t i o n H a n d l e r . p r o c e s s C o n n e c t i o n ( H t t p 11 B a s e P r o t o c o l . j a v a : 664 ) a t o r g . a p a c h e . t o m c a t . u t i l . n e t . P o o l T c p E n d p o i n t . p r o c e s s S o c k e t ( P o o l T c p E n d p o i n t . j a v a : 527 ) a t o r g . a p a c h e . t o m c a t . u t i l . n e t . L e a d e r F o l l o w e r W o r k e r T h r e a d . r u n I t ( L e a d e r F o l l o w e r W o r k e r T h r e a d . j a v a : 80 ) a t o r g . a p a c h e . t o m c a t . u t i l . t h r e a d s . T h r e a d P o o l 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.tomcat.util.buf.ByteChunk.append(ByteChunk.java:348)
at org.apache.coyote.http11.InternalOutputBuffer$OutputStreamOutputBuffer.doWrite(InternalOutputBuffer.java:769)
at org.apache.coyote.http11.filters.ChunkedOutputFilter.doWrite(ChunkedOutputFilter.java:125)
at org.apache.coyote.http11.InternalOutputBuffer.doWrite(InternalOutputBuffer.java:579)
at org.apache.coyote.Response.doWrite(Response.java:559)
at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:361)
… 22 more

说明:

网上搜了一下,大致出现问题的原因如下:

1、这个问题一般是客户端在连接还没有完全建立的时候就取消连接,比如用户按了浏览器上面的“停止”按钮,一般来说没有什么问题。但是如果频繁出现,就表示很多客户端连接到Apache服务器的响应时间太长了,可能是网络的问题或者服务器性能问题 可能你的网络连接存在一些问题,你的数据传输的时候,可能由于时间等待的太久,但是server段设置的连接检验时间限制一定,那么就可能出现这种情况的!
2、ClientAbortException: java.net.SocketException: Connection reset by peer: socket write error的原因是由于处理http连接时,正在输出内容时,用户关闭了IE,会出现一个"ClientAbortException",属于I/O处理中出现的一个异常,应用服务器应该会捕捉。

3、应该是线程被占用的太多了 无法控制了
我想可能会是:数据库库连接达到极限,.应用服务器 最大线程并发数 达到极限,内存耗尽。

目前没有找到好的解决办法。。。

关于java.net.SocketException: Connection reset by peer: socket write error的问题请教!
大家好,本人在开发首页的地图导航显示数据时,遇到一些关于
Exception Processing ErrorPage[errorCode=404, location=/building.jsp]
ClientAbortException: java.net.SocketException: Connection reset by peer: socket write error的问题。
本功能大概是:在鼠标移动到某个城市时,将显示一个从数据库读取的城市生产总额和项目数等信息。
本人用了AJAX进行异步交互读取数据来显示。虽然能成功显示,但是在ECLIPSE的窗口总是会出现错误如上所示,经上网查后发现是可能自己在客户端做测试时用鼠标移动到下个城市太快的缘故吧,导致客户端不停刷新,造成无用的进程,虽然数据能正常显示,但我想请教各位高手有什么好的解决方案使后台不会有Connection reset by peer: socket write error提示出现,谢谢!

发布了7 篇原创文章 · 获赞 11 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/dxyzhbb/article/details/103872882
今日推荐