Что означает исключение "javax.servlet.jsp.JspException: Broken pipe"? - PullRequest
10 голосов
/ 05 мая 2010

Я получаю следующую ошибку:

javax.servlet.jsp.JspException: Broken pipe

Теперь я видел вопросы / ответы относительно исключения сокета, но эта ошибка происходит из другого пакета. Любая помощь с благодарностью.
Кстати, я вижу довольно много этих ошибок в журналах Weblogic Node веб-приложения Struts, и я думаю, что это связано с тем, что конечные пользователи закрывают свой веб-браузер до того, как страница перезагрузится / выполнит следующий шаг (транзакция базы данных, которая требует немного времени для выполнения, от 30 секунд до 4 минут).

Ответы [ 4 ]

10 голосов
/ 05 мая 2010

Я думаю, что это связано с тем, что конечные пользователи закрывают свой веб-браузер до того, как страница перезагрузится / выполнит следующий шаг

Вы совершенно правы. Это исключение будет вызвано, когда клиент прерывает текущий запрос, удаляя его, закрывая вкладку / окно, обновляя запрос и т. Д. , пока запрос еще выполняется. Другими словами, клиент внезапно закрыл соединение, и серверная сторона больше не может записывать / сбрасывать в него байты. Обычно он имеет значение IOException в качестве основной причины, обычно в виде специфического подкласса сервлет-контейнера, такого как ClientAbortException в случае Tomcat и клонов. Если вы исследуете всю трассировку стека в журналах сервера, вы найдете ее где-то внизу.

1 голос
/ 05 мая 2010

HTTPRequest обрабатывается цепочкой сервлетов, которые связаны друг с другом с помощью каналов. Когда браузер прекращает соединение и сокет закрывается, он попадает на уровень управления цепочкой сервлета. Сервлет, вероятно, косвенно ловит исключение закрытого сокета и выдает его как сломанную трубу. Посмотрите на любое упакованное исключение для более подробной информации.

1 голос
/ 05 мая 2010

Я уверен, что базовый пакет использует каналы для передачи результата от a к b. Теперь B (ServletOutputStream) закрывается, а другой конец канала уведомляет об этом, вызывая это исключение.

0 голосов
/ 17 марта 2012

Это происходит, когда пользователь нажимает «Стоп», выходит из системы или преждевременно прерывает соединение. Мы можем игнорировать это исключение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...