2014-01-15 155 views
0

我有一個問題的JEE應用程序: 通常一個Web瀏覽器發出請求將數據導出到excel文件,服務器發送xls文件到網絡瀏覽器客戶端。Java,獲取:java.net.SocketException:輸出Excel文件時損壞的管道

下使導出數據到Excel文件時,服務器不發送響應的請求通過瀏覽器發送某些請求參數,而不是服務器始終java.net.SocketException異常:殘破的管道

相關的代碼:

ByteArrayOutputStream memStream = getDocumentBO().generateDoc(document, numExp, tipo,  indexCol, nameCol, widthCol, orden, sc, url, true); 
int size = memStream.size(); 
Long name = new Date().getTime(); 
response.setContentType("application/vnd.ms-excel"); 
response.setHeader("Content-Disposition", ("attachment;filename=" + name + ".xls")); 
response.setContentLength(size); 
ServletOutputStream ouputStream = response.getOutputStream(); 
memStream.writeTo(ouputStream); 
ouputStream.flush(); 
ouputStream.close(); 

的導致異常代碼行是memStream.writeTo(ouputStream);

堆棧跟蹤是:

java.net.SocketException: Broken pipe 

at java.net.SocketOutputStream.socketWrite0(Native Method) 
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92) 
at java.net.SocketOutputStream.write(SocketOutputStream.java:136) 
at weblogic.servlet.internal.ChunkOutput.writeChunkNoTransfer(ChunkOutput.java:548) 
at weblogic.servlet.internal.ChunkOutput.writeChunks(ChunkOutput.java:505) 
at weblogic.servlet.internal.ChunkOutput.flush(ChunkOutput.java:382) 
at weblogic.servlet.internal.ChunkOutput.checkForFlush(ChunkOutput.java:469) 
at weblogic.servlet.internal.ChunkOutput.write(ChunkOutput.java:304) 
at weblogic.servlet.internal.ChunkOutputWrapper.write(ChunkOutputWrapper.java:137) 
at weblogic.servlet.internal.ServletOutputStreamImpl.write(ServletOutputStreamImpl.java:169) 
at java.io.ByteArrayOutputStream.writeTo(ByteArrayOutputStream.java:112) 
at net.gencat.acc.sic.action.ExportAction.execute(ExportAction.java:202) 

瀏覽器客戶端尚未它使請求和服務器拋出異常的時刻的時刻之間關閉。該服務器是weblogic。

我想解決這個問題

回答

0

瀏覽器客戶端尚未它使請求和服務器拋出異常的時刻的時刻之間關閉。

哦,是的,它已經。對方已關閉連接。沒有兩種方式。