1つのWebアプリケーションを含む埋め込みJettyインスタンスを起動します。 webappは起動時に起動します。 WebappのcontextInitializedが例外をスローするかどうかを検出する方法を知りたいです。Jetty:Webappが起動に失敗したかどうかを検出します。
Webアプリケーションは、例外をスローする場合、Server.start()がtrueを返していないとserver.isRunning()ん。コンテナの外からwebappの例外をリスンする方法はありますか?
1つのWebアプリケーションを含む埋め込みJettyインスタンスを起動します。 webappは起動時に起動します。 WebappのcontextInitializedが例外をスローするかどうかを検出する方法を知りたいです。Jetty:Webappが起動に失敗したかどうかを検出します。
Webアプリケーションは、例外をスローする場合、Server.start()がtrueを返していないとserver.isRunning()ん。コンテナの外からwebappの例外をリスンする方法はありますか?
私自身の質問に答える。
WebAppContext.setThrowUnavailableOnStartupException(true)
を設定すると、サーバはWebapp例外をすべてServer.start()
に伝播します。私は、サーバーの起動後に個々のコンテキストを確認するためにWebAppContext.isFailed()
も呼び出すことができると推測しています。
これは、埋め込まれていない解決策のためにこの作業をしようとしていました。場合には誰もが同様のボートにある、その場合の解決策は、以下の内容で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>
予想通り、サーバーが例外の起動に失敗します。
注:Jetty 9.3+ではDTDが無効です。 –
Jetty 9のメソッド 'WebAppContext.setThrowUnavailableOnStartupException(true)'では、 'webappContext.isAvailable()'とwebappContext.getUnavailableException()で起動時にエラーが発生する可能性があります。 – reap
org.eclipse.jetty.deploy.DeploymentManager requestAppGoalメソッドは、org.eclipse.jetty.webappWebAppContext.java.doStart()によって生成された例外スタックトレースを記録するだけで例外を再スローしません。だから、それはどのようにServer.start()に伝播できますか? – quintin