在做一个文件的导出,数据少的时候还可以,数据量稍微大点,就出现这个异常!
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.coyote.tomcat5.OutputBuffer.realWriteBytes(OutputBuffer.java:374)
at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:323)
at org.apache.coyote.tomcat5.OutputBuffer.writeBytes(OutputBuffer.java:402)
at org.apache.coyote.tomcat5.OutputBuffer.write(OutputBuffer.java:389)
at org.apache.coyote.tomcat5.CoyoteOutputStream.write(CoyoteOutputStream.java:76)
at jxl.write.biff.MemoryDataOutput.writeData(MemoryDataOutput.java:107)
at jxl.write.biff.CompoundFile.writeExcelData(CompoundFile.java:505)
at jxl.write.biff.CompoundFile.write(CompoundFile.java:455)
at jxl.write.biff.File.close(File.java:120)
at jxl.write.biff.WritableWorkbookImpl.close(WritableWorkbookImpl.java:447)
at com.asiainfo.aibiabr.action.CommNewaccountAction.exportXLS(CommNewaccountAction.java:533)
at com.asiainfo.aibiabr.action.CommNewaccountAction.Export(CommNewaccountAction.java:171)
at com.asiainfo.aibiabr.action.CommNewaccountAction.execute(CommNewaccountAction.java:102)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at com.asiainfo.filter.CharsetFilter.doFilter(CharsetFilter.java:28)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at com.asiainfo.filter.SessionFilter.doFilter(SessionFilter.java:40)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)

解决方案 »

  1.   

    代码接楼上:
    private void exportCVS(List<CommNewaccount> list, List<String[]> column,
    HttpServletResponse response) {
    // TODO Auto-generated method stub
    String exportFileName = "入网(重入网)稽核结果集";
    StringBuffer buffer = new StringBuffer();
    boolean bWrite = false;
    for (int i = 0; i < column.size(); i++) {
    if (!bWrite) {
    buffer.append(column.get(i)[1]);
    bWrite = true;
    } else {
    buffer.append("," + column.get(i)[1]);
    }
    }
    buffer.append("\r\n");

    for (int i = 0; i < list.size(); i++) {
    bWrite = false;
    Object div = (Object) list.get(i);
    for (int j = 0; j < column.size(); j++) { String _val = String.valueOf(com.asiainfo.aibiabr.util.BeanUtil.getValue(div, column.get(j)[0])); if("county_id".equals(column.get(j)[0]))
    {
    _val = LoadCacheDict.getDictItemName("DIM_LDC_COUNTY", "---", _val.trim());
    }
    else if("indivi_type".equals(column.get(j)[0])){
    _val = LoadCacheDict.getDictItemName("DIM_INDIVI_TYPE", "---", _val.trim());
    }
    else if("cust_type".equals(column.get(j)[0])){
    _val = LoadCacheDict.getDictItemName("DIM_CUST_TYPE", "---", _val.trim());
    }
    else if("card_type".equals(column.get(j)[0])){
    _val = LoadCacheDict.getDictItemName("DIM_CARD_TYPE", "---", _val.trim());
    }
    else if("plan_name".equals(column.get(j)[0])){
    String val =String.valueOf(com.asiainfo.aibiabr.util.BeanUtil.getValue(div,column.get(j-1)[0]));
    String _valf = LoadCacheDict.getDictItemName("DIM_LDC_PLAN", "---", val.trim());
    if(_valf.trim()!= null && _valf.trim().length()>0){
        _val = _valf;
    }
    }
    else if("bank_account_type".equals(column.get(j)[0])){
    _val = LoadCacheDict.getDictItemName("DIM_ACC_TYPE", "---", _val.trim());
    }
    else if("area_id".equals(column.get(j)[0]))
    {
    _val = LoadCacheDict.getDictItemName("DIM_LDC_AREA", "---", _val.trim());
    }
    else if("channel_id".equals(column.get(j)[0]))
    {
    _val = LoadCacheDict.getDictItemName("DIM_LDC_CHANNEL", "---", _val.trim());
    }
    else if("choose_level".equals(column.get(j)[0]))
    {
    _val = LoadCacheDict.getDictItemName("DIM_CHOOSE_LEVEL", "---", _val.trim());
    }
    else if("is_indivi".equals(column.get(j)[0]))
    {
    _val = "0".equals(_val)?"未定制":"1".equals(_val)?"已定制":"";
    }
    else if("handle_user".equals(column.get(j)[0]))
    {
    _val = LoadCacheDict.getDictItemName("DIM_USER", "---", _val.trim());
    }
    else if("reaudit_user".equals(column.get(j)[0]))
    {
    _val = LoadCacheDict.getDictItemName("DIM_USER", "---", _val.trim());
    }
    else if("audit_err".equals(column.get(j)[0])){
    String[] errs = com.asiainfo.aibiabr.util.StringUtil.tokenizeToStringArray(_val, ",");
    StringBuffer err= new StringBuffer();
    for(int n=0;n<errs.length;n++)
    {
    CommAuditdefine audit = com.asiainfo.aibiabr.constant.AibiabrConstant.BR_COMM_AUDIT_DEFINE.get(errs[n]);
    audit.getAudit_desc();
    int m=n+1;
    err = err.append(m+"、"+audit.getAudit_desc()+";"); 
    }
    _val = err.toString();

    }
    else if("audit_result".equals(column.get(j)[0]))
    {
    _val = "0".equals(_val)?"稽核错误":"1".equals(_val)?"稽核正确":"";
    }
    else if("handle_cause".equals(column.get(j)[0]))
    {
    if(com.asiainfo.aibiabr.util.BeanUtil.getValue(div,"audit_result").equals("1"))
    {
    _val = "免反馈";
    }
    else
    {
    _val = "0".equals(_val)?"营业误操作":"1".equals(_val)?"客户提供虚假信息":"2".equals(_val)?"领导审批":"3".equals(_val)?"其他原因":"未反馈";
    }
    }
    else if("reaudit_result".equals(column.get(j)[0]))
    {
    if(com.asiainfo.aibiabr.util.BeanUtil.getValue(div,"audit_result").equals("1"))
    {
    _val = "免稽核";
    }
    else
    {
    _val = "0".equals(_val)?"二次稽核错误":"1".equals(_val)?"二次稽核正确":"未稽核";
    }
    } _val = _val==null||"null".equals(_val)?"":_val;
    if (!bWrite) {
    buffer.append(_val);
    bWrite = true;
    } else {
    buffer.append("," + _val);
    }
    }
    buffer.append("\r\n");
    } OutputStreamWriter fw = null;
    BufferedWriter bw = null;
    try {
    response.reset();
    response.setCharacterEncoding("GBK");
    response.setContentType("application/txt");
    response.addHeader("Content-Disposition", "attachment; filename=\""
    + new String(exportFileName.getBytes("GBK"), "ISO-8859-1")
    + ".csv\"");
    fw = new OutputStreamWriter(response.getOutputStream(), "GBK"); // 创建FileWriter对象,用来写入字符流
    bw = new BufferedWriter(fw); // 将缓冲对文件的输出
    bw.write(buffer.toString());
    } catch (IOException e) {
    e.printStackTrace();
    } finally {
    try {
    bw.flush(); // 刷新该流的缓冲
    bw.close();
    fw.close();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    }
      

  2.   

    继续接着:
    private void exportXLS(List<CommNewaccount> list, List<String[]> column,
    HttpServletResponse response) {
    // TODO Auto-generated method stub
    String exportFileName = "入网(重入网)稽核结果集";
    response.reset();
    response.setContentType("bin");
    try {
    response.addHeader("Content-Disposition", "attachment; filename=\""
    + new String((exportFileName + ".xls").getBytes("GBK"),
    "ISO-8859-1") + "\"");
    } catch (UnsupportedEncodingException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
    }
    WritableWorkbook book = null;
    java.io.OutputStream os = null;
    try {
    os = response.getOutputStream();
    book = jxl.Workbook.createWorkbook(os);
    jxl.write.WritableSheet sh = book
    .createSheet(exportFileName, 0);
    jxl.write.Label label_head = null; jxl.write.WritableFont wf = new jxl.write.WritableFont(
    WritableFont.createFont(""), 10, WritableFont.BOLD,
    false, UnderlineStyle.NO_UNDERLINE,
    jxl.format.Colour.BLACK); jxl.write.WritableCellFormat headFormat = new jxl.write.WritableCellFormat(
    wf);
    headFormat.setAlignment(Alignment.CENTRE);
    headFormat.setVerticalAlignment(VerticalAlignment.CENTRE);
    headFormat.setBorder(Border.ALL, BorderLineStyle.THIN);
    headFormat.setBackground(Colour.YELLOW);

    for (int i = 0; i < column.size(); i++) {
    label_head = new jxl.write.Label(i, 0, column.get(i)[1],
    headFormat);
    sh.addCell(label_head);
    }
    jxl.write.WritableFont wf2 = new jxl.write.WritableFont(
    WritableFont.createFont("宋体"), 10,
    WritableFont.NO_BOLD, false,
    UnderlineStyle.NO_UNDERLINE, jxl.format.Colour.BLACK);
    jxl.write.WritableCellFormat stringFormat = new jxl.write.WritableCellFormat(
    wf2);
    stringFormat.setAlignment(Alignment.LEFT);
    stringFormat.setVerticalAlignment(VerticalAlignment.CENTRE);
    stringFormat.setBorder(Border.ALL, BorderLineStyle.THIN); for (int i = 0; i < list.size(); i++) {
    Object div =  list.get(i);
    for (int j = 0; j < column.size(); j++) {
    String _val = String.valueOf(com.asiainfo.aibiabr.util.BeanUtil.getValue(div,
    column.get(j)[0]));
    if("county_id".equals(column.get(j)[0]))
    {
    _val = LoadCacheDict.getDictItemName("DIM_LDC_COUNTY", "---", _val.trim());
    }
    else if("indivi_type".equals(column.get(j)[0])){
    _val = LoadCacheDict.getDictItemName("DIM_INDIVI_TYPE", "---", _val.trim());
    }
    else if("cust_type".equals(column.get(j)[0])){
    _val = LoadCacheDict.getDictItemName("DIM_CUST_TYPE", "---", _val.trim());
    }
    else if("card_type".equals(column.get(j)[0])){
    _val = LoadCacheDict.getDictItemName("DIM_CARD_TYPE", "---", _val.trim());
    }
    else if("plan_name".equals(column.get(j)[0])){
    String val =String.valueOf(com.asiainfo.aibiabr.util.BeanUtil.getValue(div,column.get(j-1)[0]));
    String _valf = LoadCacheDict.getDictItemName("DIM_LDC_PLAN", "---", val.trim());
    if(_valf.trim()!= null && _valf.trim().length()>0){
        _val = _valf;
    }
    }
    else if("bank_account_type".equals(column.get(j)[0])){
    _val = LoadCacheDict.getDictItemName("DIM_ACC_TYPE", "---", _val.trim());
    }
    else if("area_id".equals(column.get(j)[0]))
    {
    _val = LoadCacheDict.getDictItemName("DIM_LDC_AREA", "---", _val.trim());
    }
    else if("channel_id".equals(column.get(j)[0]))
    {
    _val = LoadCacheDict.getDictItemName("DIM_LDC_CHANNEL", "---", _val.trim());
    }
    else if("choose_level".equals(column.get(j)[0]))
    {
    _val = LoadCacheDict.getDictItemName("DIM_CHOOSE_LEVEL", "---", _val.trim());
    }
    else if("is_indivi".equals(column.get(j)[0]))
    {
    _val = "0".equals(_val)?"未定制":"1".equals(_val)?"已定制":"";
    }
    else if("handle_user".equals(column.get(j)[0]))
    {
    _val = LoadCacheDict.getDictItemName("DIM_USER", "---", _val.trim());
    }
    else if("reaudit_user".equals(column.get(j)[0]))
    {
    _val = LoadCacheDict.getDictItemName("DIM_USER", "---", _val.trim());
    }
    else if("audit_err".equals(column.get(j)[0])){
    String[] errs = com.asiainfo.aibiabr.util.StringUtil.tokenizeToStringArray(_val, ",");
    StringBuffer err= new StringBuffer();
    for(int n=0;n<errs.length;n++)
    {
    CommAuditdefine audit = com.asiainfo.aibiabr.constant.AibiabrConstant.BR_COMM_AUDIT_DEFINE.get(errs[n]);
    audit.getAudit_desc();
    int m=n+1;
    err = err.append(m+"、"+audit.getAudit_desc()+";"); 
    }
    _val = err.toString();

    }
    else if("audit_result".equals(column.get(j)[0]))
    {
    _val = "0".equals(_val)?"稽核错误":"1".equals(_val)?"稽核正确":"";
    }
    else if("handle_cause".equals(column.get(j)[0]))
    {
    if(com.asiainfo.aibiabr.util.BeanUtil.getValue(div,"audit_result").equals("1"))
    {
    _val = "免反馈";
    }
    else
    {
    _val = "0".equals(_val)?"营业误操作":"1".equals(_val)?"客户提供虚假信息":"2".equals(_val)?"领导审批":"3".equals(_val)?"其他原因":"未反馈";
    }
    }
    else if("reaudit_result".equals(column.get(j)[0]))
    {
    if(com.asiainfo.aibiabr.util.BeanUtil.getValue(div,"audit_result").equals("1"))
    {
    _val = "免稽核";
    }
    else
    {
    _val = "0".equals(_val)?"二次稽核错误":"1".equals(_val)?"二次稽核正确":"未稽核";
    }
    }

    _val = _val==null||"null".equals(_val)?"":_val;

    label_head = new jxl.write.Label(j, i + 1, _val,
    stringFormat);
    sh.addCell(label_head);
    }
    }
    } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } finally {
    try {
    book.write();
    try {
    book.close();
    } catch (WriteException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    book = null;
    try {
    os.flush();
    os.close();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    }
      

  3.   

    客户端设置了超时机制,如IE超过了请求的最大时间,就会重置请求
    造成连接重置,服务端就会报:java.net.SocketException: Connection reset by peer: socket write error解决办法(Ajax文件下载):
    1)客户端请求,服务端返回请求
    2)服务端生产Excel,客户端定时请求查看Excel生成结果
    3)服务端生成Excle完成,客户端下载Excel
      

  4.   

    楼主。。你是做Excel导出吧?  当客户端点击取消时会报这个异常有时候不点也会报   不过没关系好像这个异常不影响系统的正常使用。。