Как создать событие ошибки, когда приложение Tomcat не запускается - PullRequest
2 голосов
/ 05 января 2012

Я использую Tomcat 7.0.23 и Spring 3.0.5+.Я хочу создать событие, если приложение успешно запущено или не удалось.Я могу сгенерировать успешное событие: я создаю бин ProductPostInitializer implements InitializingBean, который зависит от моих сервисных бинов, и если метод afterPropertiesSet вызывает, я генерирую успешное событие.

Как сгенерировать событие ошибки?

1 Ответ

4 голосов
/ 05 января 2012

Подкласс ContextLoaderListener:

public class NotifyingContextLoaderListener extends ContextLoaderListener {

    @Override
    public void contextInitialized(ServletContextEvent event) {
        try {
            super.contextInitialized(event);
            //generate success event
        }
        catch (RuntimeException e) {
            //generate failure event
            throw e;
        }
    }
}

И используйте его в своем web.xml вместо ContextLoaderListener:

<listener>
    <listener-class>com.example.NotifyingContextLoaderListener</listener-class>
</listener>

Обратите внимание, что ваше решение для генерации события успеха не является полностью безопасным.При успешном создании компонента ProductPostInitializer генерируется событие, а не все приложение / контекст.Это означает, что событие может быть сгенерировано, даже если запуск контекста впоследствии завершится неудачно (например, bean-компоненты, зависящие от ProductPostInitializer, не запускаются).

Решение выше решает эту проблему.

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