ClientAbortException: java.net.SocketException

來源:互聯網
上載者:User

ClientAbortException:  java.net.SocketException: Connection reset by peer: socket write error

一.異常說明:

用JFreeChart 往瀏覽器輸出圖表圖片時,如果重新整理太快,就有如下異常

ClientAbortException:  java.net.SocketException: Connection reset by peer: socket write error

代碼如下:

 ClientAbortException:  java.net.SocketException: Connection reset by peer: socket write error             
 at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:358)            
 at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:434)            
 at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:349)            
 at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:381)            
 at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:370)            
 at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:89)            
 at javax.imageio.stream.FileCacheImageOutputStream.flushBefore(FileCacheImageOutputStream.java:230)            
 at javax.imageio.stream.ImageInputStreamImpl.flush(ImageInputStreamImpl.java:811)            
 at com.sun.imageio.plugins.jpeg.JPEGImageWriter.write(JPEGImageWriter.java:1027)            
 at org.jfree.chart.encoders.SunJPEGEncoderAdapter.encode(SunJPEGEncoderAdapter.java:173)            
 at org.jfree.chart.encoders.EncoderUtil.writeBufferedImage(EncoderUtil.java:137)            
 at org.jfree.chart.ChartUtilities.writeChartAsJPEG(ChartUtilities.java:443)            
 at org.jfree.chart.ChartUtilities.writeChartAsJPEG(ChartUtilities.java:389)            

Caused by: java.net.SocketException: Connection reset by peer: socket write error            
 at java.net.SocketOutputStream.socketWrite0(Native Method)           
 at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)           
 at java.net.SocketOutputStream.write(SocketOutputStream.java:136)           
 at org.apache.coyote.http11.InternalOutputBuffer.realWriteBytes(InternalOutputBuffer.java:741)           
 at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:434)           
 at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:349)           
 at org.apache.coyote.http11.InternalOutputBuffer$OutputStreamOutputBuffer.doWrite(InternalOutputBuffer.java:765)           
 at org.apache.coyote.http11.filters.ChunkedOutputFilter.doWrite(ChunkedOutputFilter.java:126)           
 at org.apache.coyote.http11.InternalOutputBuffer.doWrite(InternalOutputBuffer.java:574)           
 at org.apache.coyote.Response.doWrite(Response.java:560)           
 at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:353)           
 ... 47 more           
 

二.原因分析

在BAIDU找了下原因,大概歸結為:
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
很多人都說是用戶端造成的,沒有辦法控制,是個比較鬱悶的問題。
 

但是有個哥們說的很好,如果ClientAbortException:是可以不輸出這些異常

具體辦法

Code:
  1.  try {   
  2.   
  3.    //處理代碼放在try……catch塊中,在catch部分使用判斷避免讓系統拋出ClientAbortException,   
  4.   
  5. ChartUtilities.writeChartAsJPEG(response.getOutputStream(), chart, 600, 400);   
  6.   
  7.   } catch (Exception e) {   
  8.    String simplename = e.getClass().getSimpleName();      
  9.       if("ClientAbortException".equals(simplename)){      
  10.             System.out.println("用戶端重新整理太快了");   
  11.        }else    
  12.        e.printStackTrace();   
  13.   
  14.   }   
  15.   return  mapping.findForward("succ");   
  16.  }   
  17.   
  18.     

 

三.結論

這樣做是可以的。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.