我正在啓動包含單個Web應用程序的嵌入式Jetty實例。該webapp啓動時啓動。 我想知道如何檢測Web應用程序的contextInitialized是否拋出異常。碼頭:檢測Webapp是否無法啓動
當webapp引發異常時,Server.start()不會,server.isRunning()返回true。有沒有辦法讓我從容器外部聽Web應用程序異常?
我正在啓動包含單個Web應用程序的嵌入式Jetty實例。該webapp啓動時啓動。 我想知道如何檢測Web應用程序的contextInitialized是否拋出異常。碼頭:檢測Webapp是否無法啓動
當webapp引發異常時,Server.start()不會,server.isRunning()返回true。有沒有辦法讓我從容器外部聽Web應用程序異常?
回答我自己的問題。
設置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>
服務器將在一個異常失敗的啓動。
注意:該DTD對於Jetty 9.3+無效。 – 2017-03-13 23:07:38
在Jetty 9方法'WebAppContext.setThrowUnavailableOnStartupException(true)'中,但您可以檢查webapp是否可用於'webappContext.isAvailable()',並且在啓動時可能會出現'webappContext.getUnavailableException()'錯誤。 – reap 2013-12-19 08:43:43
org.eclipse.jetty.deploy.DeploymentManager requestAppGoal方法不會重新拋出異常,它只會記錄由org.eclipse.jetty.webappWebAppContext.java.doStart()生成的異常堆棧跟蹤。那麼,它如何傳播到Server.start()呢? – quintin 2017-12-06 07:52:42