我有一个应用程序,其中包含由主应用程序上下文实例化的Embedded Jetty。在Jetty中,初始化了一个额外的Spring Web应用程序上下文,并使用HTTP Invoker导出服务。
目前,当嵌入式上下文无法初始化(通过DispatcherSerlvet
)时,Web应用程序上下文根本不可用,但Jetty继续在指定端口上运行。这使得应用程序不一致。如果嵌入式Spring上下文无法启动,我喜欢以某种方式拆除主上下文(和应用程序)。这样做的正确方法是什么?是否有DispatcherServlet
的监听器可以获得有关初始化问题的通知?
答案 0 :(得分:1)
我已经设法自己解决了这个问题。
Jetty的ServletHolder
和WebAppContext
类现在有一个getUnavailableException()
函数返回初始化错误,如果启动成功则返回null。请参阅JETTY-319 feature request ticket。我已经为管理Spring的ServletHolder
的{{1}} bean添加了一个ID,并且在刷新外部Spring上下文后,我添加了一个针对这个bean的简单检查。如果出现错误,我可以按照我的意愿拆除应用程序。