gpt4 book ai didi

java - Webapp 启动失败但 Jetty LifeCycle 声称 "started"

转载 作者:行者123 更新时间:2023-11-29 06:17:57 25 4
gpt4 key购买 nike

我正在使用嵌入式 Jetty 启动标准 Java 网络应用程序。我的启动器是这样的:

import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.util.component.LifeCycle.Listener;
import org.eclipse.jetty.webapp.WebAppContext;

...

Listener listener = ...;
Server server = new Server(8080);
WebAppContext webapp = new WebAppContext();
...
webapp.addLifeCycleListener(listener);

server.setHandler(webapp);
server.start();
...

一切正常,因为我可以启动我的应用程序并浏览到它,一切似乎都在工作。

但现在我正在尝试向我的启动器添加错误报告。我暂时将我的 webapp 设置为在 ServletContextListenercontextInitialized() 方法中抛出异常。抛出异常,我得到一条日志消息

ERROR org.eclipse.jetty.util.log Failed startup of context WebAppContext@...

但是我的 LifeCycleListener 没有收到任何失败事件。事实上,它接收到一个启动事件,传递给监听器的 WebAddContextLifeCycle#isFailed() 返回 false,为 LifeCycle#isRunning()< 返回 true/.

浏览到我的 webapp 导致 503 Service Unavailable 错误。

这发生在 Jetty 版本 7.0.1.v20091125 和 7.2.1.v20101111 中。参见 Jetty 7 api docs .

最佳答案

根据我对 Heri 的回答的评论,WebAppContext 吞下了异常。否则它们会被 AbstractLifeCycle 捕获并发出失败事件。这让我完成了大部分工作:

public class ThrowyWebAppContext extends WebAppContext {
@Override
protected void doStart() throws Exception {
super.doStart();
if (getUnavailableException() != null) {
throw (Exception) getUnavailableException();
}
}
}

关于java - Webapp 启动失败但 Jetty LifeCycle 声称 "started",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4329341/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com