Мое веб-приложение находится за прокси nginx. Nginx настроен на отправку клиентам ответа о превышении времени ожидания для запросов старше минуты. В серверной части запросы на тайм-аут продолжают обрабатываться. У нас есть tomcat в качестве веб-сервера, я не смог найти конфигурацию для тайм-аута запросов, которые были созданы задолго до этого.
Я решил установить фильтр для проверки таких запросов. Я собираюсь протестировать эту конфигурацию, но все еще не уверен, что это лучший вариант.
Вот код фильтра
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {
if (request instanceof HttpServletRequest) {
HttpServletRequest httpServletRequest = (HttpServletRequest)request;
long timeInMillis = System.currentTimeMillis() - httpServletRequest.getSession().getLastAccessedTime();
if( timeInMillis> 60000){
HttpServletResponse httpServletResponse= (HttpServletResponse)response;
httpServletResponse.sendError(HttpServletResponse.SC_REQUEST_TIMEOUT);
}else {
filterChain.doFilter(request, response);
}
}
}