Как заставить JSP ловить ошибку/исключение?

Рейтинг: 2Ответов: 1Опубликовано: 02.12.2014

Зарегистрировал свой error.jsp в web.xml так:

<error-page>
    <location>/error.jsp</location>
</error-page>

Затем бросаю из Servlet ошибку:

if(true){
    throw new Error();
}

В результате вместо своего error.jsp я вижу пустую страницу. Но если бросать не исключение, а отправить просто код ошибки

response.sendError(404);

то страница error.jsp вызывается нормально.
К тому же при попытке бросания исключения в моём NetBeans 8.0 в консоли пишется следующее:

MonitorFilter::WARNING: the monitor filter must be the first filter in the chain.

Вроде никаких фильтров я не прикручивал. Как заставить JSP нормально ловить ошибку/исключение? (Использую Tomcat 8.0.)

Ответы

▲ 2Принят

Забейте на отлавливание ошибок в Tomcat. Надо это делать в nginx! В продакшн большинство обработок делает именно nginx, он супер быстрый. Томкат нужен только для динамики и логики.

Nginx будет крутиться на 80 порту, а томкат на 8080 к примеру, у nginx есть proxy_pass фича, которая перенапрвляет запрос к томкату, если томкат говорит об ошибке, у nginx есть такая штука как "errors" и она оттуда будет брать 404.html, 500.html и т.д., смотря какие файлы создадите в папке!

Удачи.

Пример конфига nginx:

 error_page 500 502 503 504 c:/error/500.html;
    error_page 401 c:/error/401.html;
    error_page 403 c:/error/401.html;
    error_page 404 c:/error/404.html;
    location /error {
        root c:/error/www;
    }