Отключить общую трассировку стека Tomcat6

Вопрос или проблема

Кто-нибудь может подсказать, как отключить вывод стека ошибок Tomcat6 в браузер?

Tomcat: 6.0.29

Я внес следующие изменения в /opt/apache-tomcat-6.0.29/conf/web.xml

 <error-page>
   <exception-type>java.lang.Throwable</exception-type>
   <location>/error.jsp</location>
 </error-page>

Мне сказали, что это приведет к появлению белого экрана, если файл не существует, однако я получаю стек ошибок на экране.

Я думаю, что в верхней части ваших .jsp страниц также нужно добавить что-то вроде этого:

<%@ page errorPage="errorpage.jsp" %>

Не уверен, но возможно вам также нужно добавить элемент error-page в локальный файл web.xml вашего приложения.

Если вы поставите HTTP сервер перед Tomcat, вы сможете не только отображать страницу, если Tomcat не работает, но и переопределить страницы ошибок, которые генерирует Tomcat, а также по-прежнему видеть стек ошибок, обращаясь напрямую к Tomcat.

Например, если вы используете Apache HTTPD, вы можете использовать директиву ProxyErrorOverride для отображения локальных HTML страниц вместо стека ошибок. Что-то вроде

# Не проксировать страницу ошибки 500 на Tomcat
ProxyPass /my500error.html !
# Проксировать все другие запросы на Tomcat, работающий с HTTP соединением на порту 8080
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
# Переопределить страницу ошибки 500 от Tomcat
ProxyErrorOverride on
ErrorDocument 500 /my500error.html

Cуществует множество вариантов этого с использованием AJP вместо HTTP и вашего выбранного HTTP сервера.

Ответ или решение

Как отключить вывод трассировки стека в Tomcat 6

Если вы желаете отключить отображение трассировки стека в браузере при возникновении ошибок в вашем приложении, вы можете выполнить несколько шагов. Эта проблема особенно актуальна для пользователей Tomcat 6.0.29, и ваши изменения в файле web.xml – это хороший старт, но давайте разберем процесс более детально.

1. Настройка web.xml

Вы уже добавили секцию для обработки ошибок в файл /opt/apache-tomcat-6.0.29/conf/web.xml:

<error-page>
   <exception-type>java.lang.Throwable</exception-type>
   <location>/error.jsp</location>
</error-page>

Эта конфигурация указывает Tomcat перенаправлять все исключения типа Throwable на страницу error.jsp. Убедитесь, что вы создали error.jsp и он доступен по указанному пути. Если страница отсутствует, Tomcat может по умолчанию показывать трассировку стека.

2. Указание страницы ошибок в JSP

Вы упомянули, что необходимо добавить директиву вначале каждого JSP файла:

<%@ page errorPage="error.jsp" %>

Это установит указанную вами страницу обработки ошибок на уровне каждого JSP. Таким образом, если произойдет ошибка на этом конкретном JSP, будет отображена ваша страница error.jsp, а не трассировка стека.

3. Локальный файл web.xml

Также возможно, что необходимо добавить элемент error-page в локальный файл web.xml вашего приложения (обычно он находится в WEB-INF/web.xml вашего веб-приложения). Если вы хотите, чтобы эта конфигурация применялась только к конкретному веб-приложению, разместите аналогичные настройки в его локальном web.xml:

<error-page>
   <exception-type>java.lang.Throwable</exception-type>
   <location>/error.jsp</location>
</error-page>

4. Использование HTTP-сервера перед Tomcat

Если вы используете HTTP-сервер, такой как Apache HTTPD, вы можете настроить его для обработки ошибок вместо Tomcat. В этом случае можно использовать директивы, такие как ProxyErrorOverride и ErrorDocument, чтобы указать альтернативные страницы ошибок. Пример настройки:

# Не проксировать страницу ошибки 500 в Tomcat
ProxyPass /my500error.html !
# Проксировать все остальные запросы на Tomcat
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
# Переопределение страницы ошибки 500 из Tomcat
ProxyErrorOverride on
ErrorDocument 500 /my500error.html

Таким образом, если Tomcat вернет ошибку 500, HTTP-сервер будет обслуживать my500error.html, а не показывать трассировку стека.

Заключение

Следуя этим шагам, вы сможете настроить Tomcat на отключение вывода трассировок стека и наладить управление ошибками в вашем веб-приложении. Убедитесь, что все необходимые страницы обработки ошибок существуют и доступны. Кроме того, если вы работаете с локальным web.xml или HTTP-сервером, чем более целенаправленно вы настроите конфигурации, тем лучше будет работать ваше приложение в продуктивной среде.

Если у вас возникнут дополнительные вопросы или сложности, не стесняйтесь задавать их.

Оцените материал
Добавить комментарий

Капча загружается...