首页 新闻 会员 周边 捐助

ServletResponse返回大数据量的问题

0
悬赏园豆:50 [待解决问题]

    在大数据量导出的解决方案中,我使用了POI将数据分多个Excel文件写入并最后打包成压缩文件的方案,目前20万条数据导出基本不会发生POI数据异常,但每次当数据全部写到Excel文件并压缩成rar文件后,调用HttpServleteResponse.getOutputStream().write()方法时,前端页面总是呈现假死状态,有时还会导致weblogic堆栈溢出。  关键代码如下所示(其中的response是HttpServletResponse对象):

    OutputStream os = null;
  InputStream ins = null;
  String fullZipFileName = zipFileDir + file_separator + zipFileName;
  try { 
   os = response.getOutputStream();
   byte[] contents = new byte[1024];
   ins = new BufferedInputStream(new FileInputStream(fullZipFileName));
   while(ins.read(contents, 0, 1024) != -1) {
    os.write(contents);
   }
   os.flush();
  } catch (Exception e) {
   response.setHeader("Content-Disposition", "attachment; filename=" + zipFileName);
  } finally {
   try {
    if (os != null) {
     os.close();
    }
    if (ins != null) {
     ins.close();
    }
   } catch (Exception e) {
    //throw new RuntimeException(e);   
   }   
  } 
  //将临时文件删除
  FileOperUtil.deleteDirectory(this.tempParentDir, true);
  clearGarbage();  //垃圾回收

}

 

请高手帮忙看一下?万分感谢。

stalwartwill的主页 stalwartwill | 初学一级 | 园豆:139
提问于:2013-03-20 16:25
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册