Новая функция страницы глобальной ошибки сервлета 3.0 не работает на Tomcat 7

#java #tomcat #servlets #error-handling #tomcat7

#java #tomcat #сервлеты #обработка ошибок #tomcat7

Вопрос:

В спецификации Servlet 3.0 указано, что глобальное сообщение об ошибке может быть указано в web.xml , чтобы охватить все ошибки сервера.

Пример:

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

Старый метод:

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

При добавлении этого нового метода в my web.xml в Tomcat 7 он не работает. Чем это вызвано и как я могу это решить?

Ответ №1:

Это будет ошибка в Tomcat 7. Например, она отлично работает на Glassfish 3.

Пришло время сообщить об ошибке ребятам из Tomcat, что я и сделал: проблема 52135.


Обновление: она была закрыта, поскольку спецификация Servlet была «неясной» <exception-type> и <error-code> стала необязательной. Это было показано только на рисунке 14-10 спецификации Servlet 3.0 и нигде буквально в тексте, хотя новый Servlet 3.0 XSD подтверждает это изменение. Позже это было повторно открыто, и была опубликована ссылка на хорошую статью в блоге, которая подтверждает это только еще раз. Теперь нам остается только ждать, пока разработчики Tomcat действительно исправят это. Насколько я вижу, основываясь на исходном коде Tomcat, это не будет тривиальным исправлением, и, возможно, именно поэтому оно было закрыто так скоро.


Обновление 2: это, наконец, исправлено и реализовано в Tomcat 7.0.29.

Комментарии:

1. Это то, что я подозревал. Благодарим вас за отправку проблемы!

2. Открытая вами проблема была закрыта, поскольку она была недостаточно конкретной.

3. Впоследствии я опубликовал комментарий. Не стесняйтесь перепостить проблему со ссылкой на старую проблему. Я не собираюсь снова спорить с ребятами из Tomcat.

4. Похоже, что команда повторно открыла это в качестве улучшения с версии 7.0.22. Он остается открытым.

5. Версия Tomcat была только той, которая была на момент сообщения о проблеме. В настоящее время она уже на версии 7.0.27.