如何知道端口已打开以服务于 Rest 请求?

How to know ports are open to serve Rest requests?

我正在使用 Quarkus 构建 Raspberry PI 上 运行 的应用程序。 Quarkus 暴露 Rest 接口来控制 PI;启动 Quarkus 后,将启动 Chrome 以服务打包在 Quarkus 应用程序中的 HTML/Javascript UI。 我遇到的问题是,由于 PI 非常慢,我注意到当我启动浏览器打开 UI 时,HTTP 端口似乎尚未打开或尚未接受任何 Rest 请求,因此得到返回 404。几秒钟后,端口可用。

我不确定检测 Web 容器是否就绪的最佳方法是什么。 我试过这个但是它没有用并且触发得太早:

@WebListener
public class BrowserMain implements ServletContextListener {

    @Override
    public void contextInitialized(ServletContextEvent servletContextEvent) {
        // Start Chrome
    }
}

谢谢, 丹尼尔

Quarkus 与 MicroProfile Health 集成,它应该可以满足您的需求。有关详细信息,请参阅 this 指南。

如果您正在寻找一种以编程方式知道应用程序何时准备就绪的方法,那么您只需像这样监听 StartupEvent

@ApplicationScoped
public class AppLifecycleBean {

    private static final Logger LOGGER = LoggerFactory.getLogger("ListenerBean");

    void onStart(@Observes StartupEvent ev) {               
        LOGGER.info("The application is starting...");
    }

    void onStop(@Observes ShutdownEvent ev) {               
        LOGGER.info("The application is stopping...");
    }

}

要查看更多详细信息,请查看 this 指南。