Я определил страницу ошибки в моем web.xml:
<error-page>
<exception-type>java.lang.Exception</exception-type>
<location>/error.jsp</location>
</error-page>
На этой странице ошибки у меня есть пользовательский тег, который я создал. Обработчик тега для этого тега отправляет мне по электронной почте информацию об обнаруженной ошибке. По большей части это прекрасно работает.
Где это не работает, если выходные данные уже начали отправляться клиенту во время возникновения ошибки. В этом случае мы получаем это:
SEVERE: Exception Processing ErrorPage[exceptionType=java.lang.Exception, location=/error.jsp]
java.lang.IllegalStateException
Я считаю, что эта ошибка происходит, потому что мы не можем перенаправить запрос на страницу ошибки после того, как вывод уже начался. Обходной путь, который я использовал, заключается в увеличении размера буфера на особенно больших страницах JSP. Но я пытаюсь написать общий обработчик ошибок, который можно применить к существующим приложениям, и я не уверен, что возможно пролистать сотни страниц JSP и убедиться, что их буферы достаточно велики.
Есть ли способ разрешить выполнение моего кода электронной почты трассировки стека в этом случае, даже если я на самом деле не могу отобразить страницу ошибки для клиента?