我使用嵌入式码头推出一个标准的Java Web应用程序。我的启动是这样的:的webapp启动失败,但码头的LifeCycle索赔“开始”
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();
...
这一切工作,即极细的我就可以开始我的应用程序和浏览它,一切都似乎是工作。
但现在我想错误报告添加到我的启动程序。我已经暂时设置我的web应用程序在ServletContextListener
的contextInitialized()
方法中抛出异常。该异常被抛出,而我得到的
ERROR org.eclipse.jetty.util.log Failed startup of context [email protected]
日志消息,但我LifeCycleListener不receieve任何故障事件。实际上,它收到一个已启动的事件,并且传递给听众的WebAddContext
对LifeCycle#isFailed()
返回false,对于LifeCycle#isRunning()
则返回true。
浏览到503服务不可用错误我webapp的结果。
这发生在码头版本7.0.1.v20091125和7.2.1.v20101111。见Jetty 7 api docs。
我试着将听众附加到所有这些没有运气。我正在查看[WebAppContext的源代码](http://download.eclipse.org/jetty/stable-7/xref/org/eclipse/jetty/webapp/WebAppContext.html#483)。这Log.warn匹配我看到的日志消息(除了我在错误级别看到它)。如果我正在阅读这个权利,那么错误就完全被吞噬了。 [AbstractLifeCycle]中的相关部分(http://download.eclipse.org/jetty/stable-7/xref/org/eclipse/jetty/util/component/AbstractLifeCycle.html#46)会在引发异常时设置失败子类`doStart()`。 – Patrick 2010-12-01 22:57:18