ClientAbortException:java.io.IOException解決方案


org.apache.catalina.connector 
Class ClientAbortException

java.lang.Object
  
extended by
java.lang.Throwable
      
extended by
java.lang.Exception
          
extended by
java.io.IOException
              
extended by
org.apache.catalina.connector.ClientAbortException
All Implemented Interfaces:
java.io.Serializable
 
 
ERROR [http-8080-5]: (ExportPdfController.java:196) - 
ClientAbortException java.io.IOException
at org.apache.catalina. connector.OutputBuffer.realWriteBytes(OutputBuffer.java:369)
at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:368)
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:89)
at java.io.ByteArrayOutputStream.writeTo(ByteArrayOutputStream.java:109)
at com.shihuan.web.controller.ExportPdfController.writefile(ExportPdfController.java:189)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:426)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:414)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina. connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:879)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:600)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1703)
at java.lang.Thread.run(Thread.java:619)
WARN [http-8080-4]: (MyInterceptor.java:60) - 調用方法:com.shihuan.web.controller.ExportPdfController.writefile();  花費時間:153 ms.返回網頁:原網頁
Caused byjava.io.IOException
at org.apache.coyote.http11.InternalAprOutputBuffer.flushBuffer(InternalAprOutputBuffer.java:712)
at org.apache.coyote.http11.InternalAprOutputBuffer$SocketOutputBuffer.doWrite(InternalAprOutputBuffer.java:742)
at org.apache.coyote.http11.filters.IdentityOutputFilter.doWrite(IdentityOutputFilter.java:118)
at org.apache.coyote.http11.InternalAprOutputBuffer.doWrite(InternalAprOutputBuffer.java:552)
at org.apache.coyote.Response.doWrite(Response.java:560)
at org.apache.catalina. connector.OutputBuffer.realWriteBytes(OutputBuffer.java:364)
... 35 more
 
-------------------------------------------------------------------------------------------------------------------
 
上述問題分析:
在網上查找了了下原因,大概歸結為: 
ClientAbortException: java.net.SocketException: Connection reset by peer: socket write error的原因是由於處理http連接時,正在輸出內容時,用戶關閉了IE,會出現一個"ClientAbortException",屬於I/O處理中出現的一個異常,應用服務器應該會捕捉。 
Connection reset by peer的原因: 
經常出現的Connection reset by peer: 原因可能是多方面的,不過更常見的原因是: 
①:服務器的並發連接數超過了其承載量,服務器會將其中一些連接Down掉; 
②:客戶關掉了瀏覽器,而服務器還在給客戶端發送數據; 
③:瀏覽器端按了Stop 

        很多人都說是客戶端造成的,沒有辦法控制,而且后台會記錄這個異常,日志也會瘋狂爆滿,時間長了,肯定會DOWN掉的.
       
        本人覺得大多數可能是第二條問題的原因引起的,即大多數瀏覽器阻止了窗口的彈出,相當於客戶關掉了瀏覽器,可等效於瀏覽器端按了Stop ,而這時服務器端還在給客戶端發送數據,所以產生了上異常,經過本人的測試,發現只需將網站地址(或本機地址)加入"受信任的站點"即可解決問題,因為這樣設置了以后,瀏覽器就不會阻止窗口的彈出了,這樣瀏覽器就會等到服務器端發送完數據后再進行下面的動作.因而異常就不會發生了.
 
上述問題解決辦法:  "工具->internet(選項..)->安全->受信任的站點->站點",將地址加入即可避免這個異常。
 
-------------------------------------------------------------------------------------------------------------------
 
今天也遇到這個問題了,查看了下tomcat源碼對於這個異常的描述無非也就是說請求被中斷,我的原因是由於調用導出文件方法是用這樣子的代碼的
   先執行了onclick中js  然后又去執行了href中js引起的,導致前面的請求被中斷。改成 或者 問題就解決了  主要是懶復制前面的寫法了 要是自己寫的話也肯定是也不會寫成這種形式。 所以建議樓主還是從請求為什么會被中斷着手去找原因吧。看看在輸出流在還沒有結束的時候是不是又發送了新的請求。
 
本文轉自http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece7631046893b4c4380147d8c8c4668d4e419ce3b4c413037bfa6663f405a8e906b6075a91d57eaf76223360123b59b8fc20bdfac925f75ce786a6459db0144dc48f2971a729066cd1afeae69f0ba872592de838d84030f8c005527c0b6dc1051438829ab496df4a7e95f142c&p=9765c64ad4934eac59eecb685f0e89&newp=c272ce1785cc43ec10bd9b7d0c1580231610db2151d7d1156b82c825d7331b001c3bbfb42324110fd8c27a6d01ad4d56edf33473340127a3dda5c91d9fb4c57479cb6f&user=baidu&fm=sc&query=connector%2EClientAbortException%3A&qid=a9c593a8000392fe&p1=4

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM