2012-01-05 38 views
2

我使用tomcat 7.0.23和spring 3.0.5+。如果應用程序已成功啓動或失敗,我想生成事件。我可以生成成功的事件:我創建豆ProductPostInitializer implements InitializingBean這取決於我的服務bean,如果方法afterPropertiesSet調用我生成成功的事件。如何在tomcat應用程序不啓動時創建錯誤事件

如何生成錯誤事件?

回答

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無法啓動)。

上面的解決方案解決了這個問題。

相關問題