множественная конфигурация кода ошибки web.xml - PullRequest
3 голосов
/ 10 февраля 2010

Я хотел бы направить все ошибки в свой Errorsevlet без указания всех кодов явно. Есть ли способ сделать это?

<error-page>
   <error-code>400</error-code>
   <location>/servlet/com.abc.servlet.ErrorServlet</location>
</error-page>

** И после достижения ErrorServlet, как я могу получить трассировку стека ошибки в сервлете. Так что я могу отправить подробности по электронной почте, когда происходит одна ошибка. **

Ответы [ 4 ]

11 голосов
/ 02 августа 2011

Если вы можете выполнить обновление, начиная с Servlet 3.0, можно иметь общую страницу ошибок для всех ошибок, даже тех, которые не вызваны исключением (например, 404, 401 и т. Д.). Просто пропустите <error-code> или <exception-type>, чтобы у вас был только <location>.

<error-page>
   <location>/errorServlet</location>
</error-page>

Обратите внимание, что я заменил URL, чтобы избежать использования встроенного Tomcat, и устарел InvokerServlet.

2 голосов
/ 02 августа 2011

Вам нужно будет явно указать все нужные коды, механизм подстановочных знаков не поддерживается. Кодов не так много, полный список .

Чтобы распечатать трассировку стека (например, в комментарии, для целей отладки), вы можете сделать что-то вроде этого:

<%@ page isErrorPage="true" import="java.io.*"%>
<body>
<p>Sorry, there was an error.</p>
<!-- The full stacktrace follows:-->
<!-- 
<%
if (exception != null) {
    exception.printStackTrace(new PrintWriter(out));
}
%> 
-->
</body>
0 голосов
/ 21 мая 2015

У меня была такая же проблема, и после некоторых исследований я обнаружил, что, к сожалению, в спецификации Servlet 3.0 нет четкого требования поддерживать страницу ошибок по умолчанию.

Вводит в заблуждение тот факт, что «код ошибки» или «тип исключения» являются необязательными тегами в XSD, поэтому мы склонны считать, что страница ошибок по умолчанию будет иметь страницу без тега «код ошибки» и без тега «тип исключения».

Некоторые серверы приложений (например, GlassFish) ведут себя так, как нам хочется, принимают страницу ошибок по умолчанию, затем, следуя порядку страниц с конкретными ошибками, переопределяют страницу ошибок по умолчанию.

Я также проверил это на WebLogic 12c и не смог заставить его работать так же, как на GlassFish. Ниже статья дает больше подсказок о Tomcat.

См .: bz.apache.org/bugzilla/show_bug.cgi?id=52135

0 голосов
/ 10 февраля 2010
<error-page>
    <exception-type>java.lang.Throwable</exception-type> 
    <location>/servlet/com.ibm.eisa.servlet.ErrorServlet</location> 
</error-page>

Попробуйте это, все ваши ошибки будут обнаружены (500), а не 404 и т. Д.

...