2012-09-07 18 views
0

我有一個應用程序,其中包含由主應用程序上下文實例化的Embedded Jetty。在Jetty中,還有一個額外的Spring Web應用程序上下文已初始化,並且使用HTTP Invoker導出服務。 目前當嵌入式上下文無法初始化時(通過DispatcherSerlvet),Web應用程序上下文不可用,但Jetty繼續在指定端口上運行。這使得應用程序不一致。如果嵌入式Spring上下文無法啓動,我喜歡以某種方式拆除主要上下文(和應用程序)。什麼是正確的方法來做到這一點?是否有DispatcherServlet的任何監聽者收到關於初始化問題的通知?如何使DispatcherServlet初始化錯誤從嵌入式Jetty中冒出來?

回答

1

我已經成功地解決了這個問題。 Jetty的ServletHolderWebAppContext類現在具有返回初始化錯誤的getUnavailableException()函數,如果啓動成功,則返回null。請參閱JETTY-319 feature request ticket。我已經爲ServletHolder bean添加了一個ID,它管理着Spring的DispatcherServlet,並且在外部Spring上下文的刷新之後,我添加了一個簡單的對這個bean的檢查。在錯誤我可以拆除應用程序,因爲我喜歡。