如何在tomcat应用程序未启动时创建错误事件

时间:2012-01-05 08:13:06

标签: java spring tomcat

我使用tomcat 7.0.23和spring 3.0.5+。如果应用程序已成功启动或失败,我想生成事件。我可以生成成功的事件:我创建bean ProductPostInitializer implements InitializingBean,它取决于我的服务bean,如果方法afterPropertiesSet调用,我生成成功的事件。

如何生成错误事件?

1 个答案:

答案 0 :(得分:4)

子类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的bean无法启动)。

上面的解决方案解决了这个问题。