Страницы ошибок с сервлетом 3.0

В web.xml файл, я пытаюсь указать страницу ошибки следующим образом.

<error-page>
    <location>/WEB-INF/jsp/admin/ErrorPage.jsp</location>
</error-page>

Я ожидаю, что он будет идти без кода ошибки в соответствии с Servlet 3.0, но это не так. Я должен явно указать соответствующий код ошибки, чтобы он работал примерно так:

<error-page>
    <description>Missing page</description>
    <error-code>404</error-code>
    <location>/WEB-INF/jsp/admin/ErrorPage.jsp</location>
</error-page>

Почему первый подход не работает с Servlet 3.0?


Я обновил NetBeans 7.2.1. Он поддерживает Apache Tomcat 7.0.27.0 с API Servlet 3.0.

Кстати, я отключил HTTP-монитор, поскольку он выдает следующее предупреждение.

MonitorFilter:: WARNING: фильтр монитора должен быть первым фильтром в цепочке.

Это произошло, когда я использовал Spring security в своем приложении, и это было отмечено как проблема jira.

1 ответ

Решение

Посмотрите на этот пост. Я никогда не делал это лично

<error-page>
    <location>/WEB-INF/jsp/admin/ErrorPage.jsp</location>
</error-page>

работает над Tomcat 7, что касается ошибки, описанной в ссылке, которую я вам дал. Я не знаю, решил ли Apache это в более поздней версии Tomcat, но я сомневаюсь.
Мое предыдущее утверждение, вероятно, было неверным. Немного покопавшись, я нашел это: https://issues.apache.org/bugzilla/show_bug.cgi?id=52135 и проблема должна была быть решена в Tomcat 7.0.29, поэтому ваше единственное решение - это обновить до 29 версия.

Здесь: http://tomcat.apache.org/tomcat-7.0-doc/changelog.html, в журнале изменений для версии 7.0.29 вы можете прочитать, почему возникла такая проблема:

Добавьте поддержку страницы ошибок по умолчанию, которая должна быть определена в web.xml, определив страницу ошибок только с вложенным элементом location. Похоже, что эта функция была предназначена для включения в спецификацию Servlet 3.0, но была случайно исключена. (Markt)

Другие вопросы по тегам