2011-12-27 6 views
6

1つのWebアプリケーションを含む埋め込みJettyインスタンスを起動します。 webappは起動時に起動します。 WebappのcontextInitializedが例外をスローするかどうかを検出する方法を知りたいです。Jetty:Webappが起動に失敗したかどうかを検出します。

Webアプリケーションは、例外をスローする場合、Server.start()がtrueを返していないとserver.isRunning()ん。コンテナの外からwebappの例外をリスンする方法はありますか?

答えて

5

私自身の質問に答える。

WebAppContext.setThrowUnavailableOnStartupException(true)を設定すると、サーバはWebapp例外をすべてServer.start()に伝播します。私は、サーバーの起動後に個々のコンテキストを確認するためにWebAppContext.isFailed()も呼び出すことができると推測しています。

+0

Jetty 9のメソッド 'WebAppContext.setThrowUnavailableOnStartupException(true)'では、 'webappContext.isAvailable()'とwebappContext.getUnavailableException()で起動時にエラーが発生する可能性があります。 – reap

+0

org.eclipse.jetty.deploy.DeploymentManager requestAppGoalメソッドは、org.eclipse.jetty.webappWebAppContext.java.doStart()によって生成された例外スタックトレースを記録するだけで例外を再スローしません。だから、それはどのようにServer.start()に伝播できますか? – quintin

4

これは、埋め込まれていない解決策のためにこの作業をしようとしていました。場合には誰もが同様のボートにある、その場合の解決策は、以下の内容でWEB-INF/jetty-env.xmlを作成することです:

<?xml version="1.0" encoding="ISO-8859-1"?> 
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://www.eclipse.org/jetty/configure.dtd"> 

<Configure class="org.eclipse.jetty.webapp.WebAppContext"> 
    <Set name="throwUnavailableOnStartupException">true</Set> 
</Configure> 

予想通り、サーバーが例外の起動に失敗します。

+0

注:Jetty 9.3+ではDTDが無効です。 –

関連する問題