首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

at weblogic.servlet.internal.ChunkOutput.writeChunkTransfer(ChunkOutput.

2012-04-03 
输出流下载问题? Socket closed项目为struts2+spring+ibatis前台为extjs页面有导出功能, 可将数据导到exce

输出流下载问题? Socket closed
项目为struts2+spring+ibatis前台为extjs
页面有导出功能, 可将数据导到excel中, 并下载
但遇到个问题
如果导出的数据过多(超过1000条), 当使用ie浏览器点导出按钮后, 页面弹出下载提示(有打开、保存功能)
此时不进行操作
大概过1分钟左右的时间, 控制台会报出如下异常:

Java code
<2011-11-24 上午08时50分47秒 GMT> <Error> <HTTP> <BEA-101017> <[weblogic.servlet.internal.WebAppServletContext@ee9368 - appName: '_appsdir_SEC_dir', name: 'SEC', context-path: '/SEC'] Root cause of ServletException.java.net.SocketException: Socket closed    at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:99)    at java.net.SocketOutputStream.write(SocketOutputStream.java:136)    at weblogic.servlet.internal.ChunkOutput.writeChunkTransfer(ChunkOutput.java:525)    at weblogic.servlet.internal.ChunkOutput.writeChunks(ChunkOutput.java:504)    at weblogic.servlet.internal.ChunkOutput.flush(ChunkOutput.java:382)    Truncated. see log file for complete stacktrace

出现异常后点打开后 excel会提示文件损坏 此时打开的excel文件仅有少量数据 而且excel表格内的文字样式也不对

但使用firefox浏览器则没有此类问题。

java中的导出代码片段:
Java code
this.getResponse().setHeader("Cache-Control", "no-cache");this.getResponse().setDateHeader("Expires", 0);this.getResponse().setContentType("application/vnd.ms-excel;charset=UTF-8");this.getResponse().setHeader("Content-Disposition", "attachment;filename=" + new String((title + ".xls").getBytes("GBK"), "iso8859-1"));WritableWorkbook workbook = Workbook.createWorkbook(this.getResponse().getOutputStream());// ......excel表格内文字边框等样式 此处省略// ......查数据库 遍历list往表格内写数据 此处省略workbook.write();workbook.close();


问题不大, 可以不解决, 但想求一个真相…… 知道的朋友帮帮忙

[解决办法]
可能weblogic有超时设置吧,可以把项目放到tomcat或其它容器中同样测试一下
[解决办法]
修改weblogic的StuckThreadMaxTime参数,将默认的600s改成1200s或者其它适合的值,看看行不行?

如不行的话。。看看下面的博文也许能解决你的问题:
http://www.blogjava.net/86mang/archive/2011/08/16/356647.html
[解决办法]
基本可以确定和weblogic有关。。。LZ网上搜一下 都是weblogic遇到这个问题。。。

热点排行