組み込みのJettyを使用して標準のJavaWebアプリを起動しています。私のランチャーは次のようなものです。
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();
...
これはすべて正常に機能し、アプリを起動して参照でき、すべてが機能しているように見えます。
しかし今、私はランチャーにエラー報告を追加しようとしています。contextInitialized()
のメソッドで例外をスローするようにWebアプリケーションを一時的に設定しましたServletContextListener
。例外がスローされ、次のログメッセージが表示されます。
ERROR org.eclipse.jetty.util.log Failed startup of context WebAppContext@...
しかし、私のLifeCycleListenerは失敗イベントを受け取りません。実際、startedイベントを受け取り、WebAddContext
リスナーに渡されたものは、に対してfalseを返し、に対してLifeCycle#isFailed()
trueを返しますLifeCycle#isRunning()
。
Webアプリケーションを参照すると、503ServiceUnavailableエラーが発生します。
これは、Jettyバージョン7.0.1.v20091125および7.2.1.v20101111で発生します。Jetty 7apidocsを参照してください。