我有一个简单的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应用程序时,它可以正常运行并在启动失败时正确关闭。
答案 0 :(得分:1)
您没有说您正在运行什么版本的Jetty。我已经检查了最新版本的jetty,其行为符合预期:如果servlet无法正确初始化,则webapp被标记为不可用,并且在调用server.stop()时,contextDestroy侦听器方法为叫。您能否提供更多详细信息,例如码头版本,日志输出,Webapp启动失败的时间等。