Страница пользовательской ошибки в Tomcat 7 для кода ошибки 500

Ребята Я борюсь с проблемой открытия моей пользовательской страницы ошибок в Tomcat в среде Windows. Некоторое решение я получил, но не повезло. Я пробовал почти все ссылки, но не работал у меня. Некоторые из них работают для другого решения, развернутого в Tomcat, но не для моей веб-службы.

Мой web.xml

<welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list>

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


Я отправляю сообщение об ошибке из своего приложения Servlet 3.0 response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);

Я поместил свой файл error.html в корневой каталог моего WebService.

Некоторые из ссылок, которые я получил для страницы JSP вместо HTML, которые я также пробовал

В случае JSP я использовал:

<%@ page isErrorPage="true" %>
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>JSP Page</title>
</head>
<body>
    <h1>Error</h1>
</body>
</html>


FYI работает отлично для другого встроенного решения Tomcat, он отлично работает. Но в моем веб-сервисе я получаю ответ 500, но страница открывается пустым. И еще одна вещь, с которой я отключил свой Internet Explorer 9.0, показывает, что сообщение об ошибке приветствуется на 500, начиная с сервлета. Но страница с ошибкой становится пустой.

Если какая-либо идея или какое-либо сомнение в моем запросе, просто дайте мне знать. Мне это нужно как можно скорее.

Ответ 1

Попробуйте добавить следующий фрагмент в WEB-INF/web.xml

<error-page>
    <error-code>500</error-code>
    <location>/Error.jsp</location>
</error-page>

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

В этом случае Error.jsp находится на том же уровне, что и каталог WEB-INF (не внутри него).

Ответ 2

То же самое можно реализовать программно, если вы используете встроенный Tomcat, например:

        Context appContext = ...            
        ErrorPage errorPage = new ErrorPage();
        errorPage.setErrorCode(HttpServletResponse.SC_NOT_FOUND);
        errorPage.setLocation("/my_custom_error_page.html");
        appContext.addErrorPage(er);