我想在我的webapp中听tomcat生命周期事件。我尝试了以下代码
try {
MBeanServer mBeanServer = MBeanServerFactory.findMBeanServer(null).get(0);
ObjectName name = new ObjectName("Catalina", "type", "Server");
Server server = (Server) mBeanServer.getAttribute(name, "managedResource");
server.addLifecycleListener(new LifecycleListener() {
@Override
public void lifecycleEvent(LifecycleEvent event) {
logger.info("lifecycle listener called. event: " + event.getType());
}
});
} catch (Exception e) {
//log error
}
我可以成功获取Server
对象并注册lifecyle事件,但代码不会收到任何生命周期事件。
我通过遍历它们检查了Server
对象中所有服务和连接器的状态,并且有些组件处于STARTING
状态。所以,我应该收到他们的STARTED
事件。
任何人都知道出了什么问题?