Вопрос по jboss, servlets, java – Broken Pipe при записи байтов в ServletOutputStream

11

Выполняя этот код,

ServletOutputStream out = response.getOutputStream();
out.write(bytes, 0, bytes.length);
out.flush();  
out.close();  

Я получаю это исключение часто, и я не могу понять, почему это происходит.

Caused by: ClientAbortException:  java.net.SocketException: Broken pipe
    at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:358)
    at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:354)
    at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:381)
    at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:370)
    at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:89)

У меня есть веб-приложение, работающее на сервере Linux, под JBoss 4.2.3 и MySQL.

Как это вызвано и как я могу решить это?

Что это за причина? Это действие для загрузки файла, например. gdfbarbosa
BalusC, спасибо за ответ. яll try ignoring the exception since I canне могу это контролировать. gdfbarbosa
Это означает, что клиент вашего сервлета по какой-то причине повесил соединение. Keith Randall
Правильно, возможно, браузер, который делал загрузку файла, потерпел крах на полпути. Или их интернет-соединение оборвалось. Или что угодно, получатель не может принимать байты, которые вы ему записываете. Keith Randall

Ваш Ответ

2   ответа
8

по которым клиент мог отключиться (истекло время ожидания, браузер был закрыт и т. Д.). Кроме того, как правило, если вы не открывали поток, не закрывайте его. Подробнее о закрытии потока здесьДолжен ли я закрыть выходной поток сервлета?.

2

response.setBufferSize (bufferSizeneeded + 200); Размер буфера по умолчанию - 8124, что может быть неприменимо для всех пользователей! а также response.setHeader (& quot; Content-Length & quot ;, String.valueOf (exportData.length));

Похожие вопросы