如何知道端口已打开以服务于 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 指南。
我正在使用 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 指南。