Лучший выбор - использовать javax.servlet.AsyncContext
и javax.servlet.AsyncListener
.
. Начните с вызова java.servlet.HttpServletRequest.startAsync()
, чтобы получить AsyncContext
.
. Затем добавьте пользовательский AsyncListener
самостоятельно, не забудьте также установить тайм-аут на AsyncContext
(поскольку его существование переопределяет механизм тайм-аута по умолчанию)
Вы получите события, которые что-то значат для вас. ..
- onComplete - обработка завершена
- onError - обработка завершилась неудачно (например, неожиданное завершение соединения)
- onTimeout - тайм-аут AsyncContext сработал
Это механизм, который API сервлетов предоставил именно для вашей ситуации: вычисления или тяжелая обработка бэкэнда во время активной запрос, который может быть прекращен досрочно.