Tomcat - перенаправление на страницу ошибок при сбое ServletContextListener - PullRequest
1 голос
/ 27 мая 2010

Когда Tomcat запускается, он вызывает мой ServletContextListener для получения соединения с базой данных, которое я позже буду использовать в других сервлетах с getServletContext ().Это называется в моем web.xml как: listener<br /> listener-class org.ppdc.database.DBCPoolingListener /listener-class<br /> /listener> (я удалил <>, потому что они не будут отображаться правильно в этом сообщении.>Если я не могу подключиться к базе данных при запуске Tomcat, я получаю ошибку 404, потому что Tomcat не может запустить приложение.

Как я могу перенаправить пользователя на пользовательскую страницу ошибки в этот момент?Я попробовал следующее в моем файле web.xml (у меня есть <> скобки в оригинале):(Ошибка-страница)(Ошибка-code404 / код ошибки)(Местоположение / file_not_found.html / местоположение)(/ Ошибка страница)

Есть идеи, как перенаправить пользователя на одну из моих страниц с ошибками, когда Tomcat пытается запустить приложение?

Спасибо, Vic

1 Ответ

1 голос
/ 27 мая 2010

Если ваше приложение не загружается, то это все. Tomcat не запускает его и не обслуживает ваши страницы ошибок.

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

Объявление фильтра в web.xml:

<filter>
  <filter-name>IsHalfDeadFilter</filter-name>
  <filter-class>my.package.IsHalfDeadFilter</filter-class>
</filter>

<filter-mapping>
  <filter-name>IsHalfDeadFilter</filter-name>
  <url-pattern>*</url-pattern>
</filter-mapping>

Затем реализуйте метод doFilter для перенаправления на страницу с ошибкой.

@Override
public void doFilter (
        final ServletRequest request,
        final ServletResponse response,
        final FilterChain chain
    ) throws
        IOException,
        ServletException
{
    if ( isHalfDead )
    {
        // redirect to error page
        return;
    }

    chain.doFilter( request, response );
}

Подробнее о фильтрах здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...