让Jetty优雅地关闭一个失败的启动webapp上下文

时间:2018-06-18 10:19:27

标签: java jetty

我有一个简单的Jetty服务器,它运行来自ServletContextListener的webapp。该文件有一些servlet和contextDestroyed。当一切正常时,这种方法非常有效,包括在退出时正常关机。

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

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

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

如何让Jetty自行清理?

如果重要的话,在Tomcat中运行与war相同的Web应用程序时,它可以正常运行并在启动失败时正确关闭。

1 个答案:

答案 0 :(得分:1)

您没有说您正在运行什么版本的Jetty。我已经检查了最新版本的jetty,其行为符合预期:如果servlet无法正确初始化,则webapp被标记为不可用,并且在调用server.stop()时,contextDestroy侦听器方法为叫。您能否提供更多详细信息,例如码头版本,日志输出,Webapp启动失败的时间等。