HttpServletResponse: Как определить, открыто ли базовое соединение? - PullRequest
2 голосов
/ 30 декабря 2011

Вот как это происходит: веб-приложение, работающее на Tomcat 6. Клиент отправляет запрос на сервер, сервер выполняет некоторую обработку, перенаправляет на сторонний URL и снова выполняет некоторую обработку.

Прежде чем выполнять перенаправление, я хочу узнать, открыто ли клиентское соединение или нет (чтобы я мог предотвратить повторную обработку).Я знаю, что sendRedirect создает IOException и IllegalStateException, и они могут быть обработаны в случае сбоя перенаправления.

Я также пытался получить выходной поток из ответа и записать любые ненужные символы в поток.Но безрезультатно (даже если я удалю клиентский компьютер из локальной сети после вызова запроса)

Я хочу знать - есть ли способ определить, все еще ли соединение между Клиентом и Сервером все еще активно?

1 Ответ

1 голос
/ 13 июля 2018

Старый вопрос, но я имел дело с подобной проблемой и нашел решение.

Прерванное HTTP-соединение действительно может быть обнаружено только в том случае, если сервер отправляет что-то клиенту, и это не удается. Для принудительной отправки данных клиенту необходимо вызвать flushBuffer() в HttpServletResponse. Если соединение прервано, выдается ClientAbortException.

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