在做一个文件的导出,数据少的时候还可以,数据量稍微大点,就出现这个异常!
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)
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)
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();
}
}
}
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();
}
}
}
造成连接重置,服务端就会报:java.net.SocketException: Connection reset by peer: socket write error解决办法(Ajax文件下载):
1)客户端请求,服务端返回请求
2)服务端生产Excel,客户端定时请求查看Excel生成结果
3)服务端生成Excle完成,客户端下载Excel