【发布时间】:2019-10-01 11:28:06
【问题描述】:
我创建了一个EventHookListener,它正在实现LifecycleListener。我已经覆盖了lifecycleEvent() 方法并通过打印服务器类型和服务器状态来继续监听服务器。
代码sn-p:
@Override
public void lifecycleEvent(LifecycleEvent arg0) {
Lifecycle lifecycle = arg0.getLifecycle();
System.out.println("Lifecycle:"+lifecycle);
if (lifecycle == null) {
return;
}
String type = arg0.getType();
System.out.println("Type:"+type);
if (type == null) {
return;
}
String stateName = lifecycle.getStateName();
System.out.println("StateName:"+stateName);
if (stateName == null) {
return;
}
}
对于 tomcat 9.0.26 版,如果服务器启动,则 tomcat 服务器会继续侦听。并且下面的日志来自Catalina.out:
但是在 9.0.26 版本中,如果服务器启动,tomcat 服务器会一直监听。
2019 年 9 月 23 日 16:36:08.381 信息 [main] org.apache.coyote.AbstractProtocol.start 启动 ProtocolHandler ["ajp-nio-8009"] 生命周期:标准服务器[8005] 类型:after_start 州名:已开始
当前目录:/tmp 退出代码:0
2019 年 9 月 23 日 16:36:08.407 信息 [主要] org.apache.catalina.startup.Catalina.start 服务器在 [8,239] 中启动 毫秒生命周期:StandardServer[8005] 类型:周期性 州名:已开始
但是对于任何其他版本的 tomcat(例如 9.0.6 版本或 8.5.45),一旦 tomcat 服务器达到“after_start”状态,生命周期侦听器就不会侦听。
例如
生命周期:标准服务器[8005] 类型:after_start 州名:已开始
当前目录:/tmp 退出代码:0 2019 年 9 月 23 日 16:48:10.422 INFO [main] org.apache.catalina.startup.Catalina.start 服务器在 681 毫秒内启动
谁能帮助我在这里遗漏的任何线索?
Lifecycle listener 的此功能仅适用于9.0.26 版本,但不适用于旧版本。虽然 LifecycleListener 类的内容对于旧的 tomcat 和最新的 tomcat 版本是相同的。
【问题讨论】: