Я не знаком с Apache CXF , но следующее должно быть применимо к любой среде на основе сервлетов Java.
Чтобы определить, отключился ли пользователь (кнопка остановки, закрытый браузер и т. Д.), Сервер должен попытаться отправить пакет. Если соединение TCP / IP было закрыто, будет выброшено IOException
.
Теоретически, приложение Java может отправлять символ пробела в различных точках во время обработки. IOException
будет означать, что клиент ушел и обработка может быть прервана.
Однако при использовании этого метода могут возникнуть некоторые проблемы:
Отправка символов во время обработки приведет к тому, что ответ будет «зафиксирован», поэтому может быть невозможно установить заголовки HTTP, файлы cookie и т. Д. На основе результата длительной обработки на стороне сервера.
Если выходной поток буферизован, пробелы не будут отправлены немедленно, что не позволит выполнить адекватный тест. В качестве обходного пути можно использовать flush()
.
Может быть трудно реализовать эту технику для данной структуры или технологии представления (JSP и т. Д.). Например, код рендеринга страницы не сможет отправить тип контента после того, как ответ был зафиксирован.