我正在启动包含单个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