Java 让Jetty优雅地关闭无法启动的webapp上下文

Java 让Jetty优雅地关闭无法启动的webapp上下文,java,jetty,Java,Jetty,我有一个简单的Jetty服务器,它从web.xml运行一个webapp。该文件包含一些servlet和一个ServletContextListener。当一切正常启动时,这一切都会完美运行,包括在退出时优雅地关闭 但是,如果由于某种原因启动webapp失败,我希望服务器仍能正常关闭。这包括调用相关ServletContextListeners的contextDestroyed方法 我如何让Jetty在其自身之后进行适当清理 如果重要的话,当在Tomcat中运行与war相同的web应用程序时,它工

我有一个简单的Jetty服务器,它从web.xml运行一个webapp。该文件包含一些servlet和一个ServletContextListener。当一切正常启动时,这一切都会完美运行,包括在退出时优雅地关闭

但是,如果由于某种原因启动webapp失败,我希望服务器仍能正常关闭。这包括调用相关ServletContextListeners的contextDestroyed方法

我如何让Jetty在其自身之后进行适当清理


如果重要的话,当在Tomcat中运行与war相同的web应用程序时,它工作正常,并且在启动失败时会正确关闭。

您没有说明正在运行的Jetty的版本。我已经对照jetty的最新版本进行了检查,其行为与预期的一样:如果servlet未能正确初始化,那么webapp将标记为不可用,并且在调用server.stop时,将调用contextDestroy侦听器方法。您能否提供更多详细信息,如jetty版本、日志输出、webapp启动失败的时间点等

WebAppContext context = ...;
Server server = ...;
server.start();

if (!context.isAvailable()) {
  // startup failed
  server.stop(); // I would expect this to call contextDestroyed
}