我使用tomcat 7.0.23和spring 3.0.5+。如果应用程序已成功启动或失败,我想生成事件。我可以生成成功的事件:我创建bean ProductPostInitializer implements InitializingBean
,它取决于我的服务bean,如果方法afterPropertiesSet调用,我生成成功的事件。
如何生成错误事件?
答案 0 :(得分:4)
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无法启动)。
上面的解决方案解决了这个问题。