【发布时间】:2018-12-06 16:46:12
【问题描述】:
问题
如何以编程方式确定 Tomcat 何时完成启动?我的意思是从运行在 Tomcat 上的 WAR 文件中以编程方式进行,很可能是通过一个 Servlet,如果可能的话可以利用容器信息?
背景
您通常在 WAR 完全部署后看到的 Catalina 日志条目与我正在寻找的内容相同。我有一个约束,使解析日志不受欢迎。但是进入 Catalina.out 的数据正是我正在寻找的。我正在尝试找到一种方法在 servlet 之上(甚至可能更高)获得关于启动时间的容器状态,但如果可能的话,我愿意接受替代方法。
我的尝试
我尝试检测 servlet 初始化,但那是特定于 WAR 内部的组件,而不是 servlet 容器本身。我也尝试过 Spring Events,但它们提供的最高级别是“应用程序上下文”,它只表示一组 Spring Bean 已完成加载,甚至不一定是所有 Spring bean ...如果有更接近 Servlet 规范或 Tomcat 的解决方案将不胜感激的特定库。
【问题讨论】:
-
具体来说,您想做什么?你想要什么“容器信息”?
-
@ChristopherSchultz “如何检测 Tomcat 启动”...如我的第一行所述。在所有初始化逻辑的最后发送到 Catalina.out 的相同启动事件。
-
如果你的应用是在Tomcat启动后部署的呢?然后没有要检测的启动事件。您想知道套接字何时绑定吗?您想知道何时可以将请求路由到您的应用程序吗?您想知道在 JVM 启动后 Tomcat 准备好接受请求所用的时间吗?真的不清楚你在问什么。
-
@ChristopherSchultz 您是否熟悉在启动结束时发送到 Catalina.out 的启动时间事件?
-
我很熟悉。那么具体来说,您要找出Tomcat的启动时间吗? Tomcat 完全有可能在应用程序部署之前就完成了启动。在那种情况下应该怎么办?
标签: tomcat servlets jakarta-ee tomcat7 tomcat8