Servlets Jetty:检测Webapp是否无法启动

Servlets Jetty:检测Webapp是否无法启动,servlets,jetty,Servlets,Jetty,我正在启动一个嵌入式Jetty实例,其中包含一个webapp。webapp在启动时启动我想知道如何检测Webapp的contextInitialized是否引发异常。 当webapp引发异常时,不会引发异常,并且server.isRunning()返回true。有没有一种方法可以让我从容器外部监听webapp异常?回答我自己的问题 设置WebAppContext.setThrowUnavailableOnStartupException(true)会导致服务器将任何webapp异常传播到serv

我正在启动一个嵌入式Jetty实例,其中包含一个webapp。webapp在启动时启动我想知道如何检测Webapp的contextInitialized是否引发异常。


当webapp引发异常时,不会引发异常,并且server.isRunning()返回true。有没有一种方法可以让我从容器外部监听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方法中
WebAppContext.setThrowUnavailableOnStartupException(true)
,但您可以通过
WebAppContext.isAvailable()
检查webapp是否可用,以及使用
WebAppContext.getUnavailableException()启动时可能出现的错误
.org.eclipse.jetty.deployment.DeploymentManager requestAppGoal方法不要重新引发异常,它只记录org.eclipse.jetty.webappWebAppContext.java.doStart()生成的异常堆栈跟踪。那么,它如何传播到Server.start()?注意:DTD对Jetty 9.3+无效。