標籤:pdf clientabortexception ie
今天在開發web pdf列印時,servlet往用戶端寫資料時,遇到這麼個問題:
Caused by: ClientAbortException: java.net.SocketException: Software caused connection abort: socket write errorat org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:406)at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:480)at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:310)at org.apache.catalina.connector.OutputBuffer.writeByte(OutputBuffer.java:450)at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:77)at com.cnpc.print.PrintServlet.doPost(PrintServlet.java:83)... 25 moreCaused by: java.net.SocketException: Software caused connection abort: socket write errorat java.net.SocketOutputStream.socketWrite0(Native Method)at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:113)at java.net.SocketOutputStream.write(SocketOutputStream.java:159)at org.apache.coyote.http11.InternalOutputBuffer.realWriteBytes(InternalOutputBuffer.java:215)at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:480)at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:366)at org.apache.coyote.http11.InternalOutputBuffer$OutputStreamOutputBuffer.doWrite(InternalOutputBuffer.java:240)at org.apache.coyote.http11.filters.ChunkedOutputFilter.doWrite(ChunkedOutputFilter.java:119)at org.apache.coyote.http11.AbstractOutputBuffer.doWrite(AbstractOutputBuffer.java:192)at org.apache.coyote.Response.doWrite(Response.java:517)at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:401)... 30 more
現象是,勾選6行資料,點列印就沒有響應了,把視窗關掉時,伺服器後台報上面的錯,勾5行資料就沒問題,懷疑幾個地方可能存在問題:
-
往socket寫PDF資料時,PDF資料有問題。(不向socket寫,改成寫檔案,檔案內容正常,排除。)
-
頁面請求PDF時是用layer.js的iframe彈窗方式,勾選多行時url參數太長。(改為彈窗後執行一段js提交form,參數放到form中,還是報錯,排除。)
-
ie開啟PDF流有問題。(改為下載檔案形式,問題依舊存在。排除。)
最後,發現就是問題2.導致的,原來是把勾選的資料的所有列序列成json後後台傳,改為只傳id列,資料減少了很多,沒問題了,但是明明被我排除了的,不明白,靠。
本文出自 “一些” 部落格,請務必保留此出處http://2924037.blog.51cto.com/2914037/1583865
ClientAbortException .. socket write error 問題