我正在使用嵌入式 Jetty 来启动标准的 Java webapp。我的启动器是这样的:
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.util.component.LifeCycle.Listener;
import org.eclipse.jetty.webapp.WebAppContext;
...
Listener listener = ...;
Server server = new Server(8080);
WebAppContext webapp = new WebAppContext();
...
webapp.addLifeCycleListener(listener);
server.setHandler(webapp);
server.start();
...
这一切都很好,因为我可以启动我的应用程序并浏览它,一切似乎都在工作。
但现在我正在尝试向我的启动器添加错误报告。我暂时将我的 webapp 设置为contextInitialized()
在ServletContextListener
. 抛出异常,我收到一条日志消息
ERROR org.eclipse.jetty.util.log Failed startup of context WebAppContext@...
但我的 LifeCycleListener 没有收到任何失败事件。实际上,它接收到一个启动事件,并且WebAddContext
传递给监听器返回 false forLifeCycle#isFailed()
和 true for LifeCycle#isRunning()
。
浏览到我的 webapp 会导致 503 Service Unavailable 错误。
这发生在 Jetty 版本 7.0.1.v20091125 和 7.2.1.v20101111 中。请参阅Jetty 7 api 文档。