java write broken pie異常

做導出功能,寫入文件時報異常,異常信息如: 

org.apache.catalina.connector.ClientAbortException: java.io.IOException: Broken pipe
 at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:364)
 at org.apache.catalina.connector.OutputBuffer.appendByteArray(OutputBuffer.java:803)
 at org.apache.catalina.connector.OutputBuffer.append(OutputBuffer.java:732)
 at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:399)
 at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:377)
 at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:96)
 at java.io.BufferedOutputStream.write(BufferedOutputStream.java:122)
 at com.hh.extra.util.WriteReponseToWeb.writeByteArray2Response(WriteReponseToWeb.java:99)

Java 代碼如:

InputStream is = new ByteArrayInputStream(content);
		ServletOutputStream out = null;
		BufferedInputStream bis = null;
		BufferedOutputStream bos = null;
		// 設置response參數,可以打開下載頁面
		response.reset();
		response.setContentType(contentType.getValue()+";charset=utf-8");
		try {
			response.setHeader("Content-Disposition", "attachment;filename="+ new String((fileName).getBytes(), "iso-8859-1"));
			out = response.getOutputStream();
			bis = new BufferedInputStream(is);
			bos = new BufferedOutputStream(out);
			byte[] buff = new byte[content.length];
			int bytesRead;
			while ( -1 != ( bytesRead = bis.read(buff, 0, buff.length) )) {
				bos.write(buff, 0, bytesRead);
			}
		} catch ( Exception e) {
			e.printStackTrace();
		} finally {
			if (bis != null)
				try {
					bis.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			if (bos != null)
				try {
					bos.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
		}

瀏覽器提示:

以上是由於nginx請求超時導致,超時時間默認是60秒,修改nginx的配置文件nginx.conf,超時時間設置爲3600(即一小時),重啓nginx即可,如圖:

location /test/ {
            proxy_pass http://localhost:8082;
            proxy_read_timeout  3600;
        }

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章