tomcat服务器启动完成后回调

Kar*_*sad 3 java spring tomcat tomcat6

在tomcat服务器sartup完成后,是否存在spring或tomcat中的任何机制,生命周期事件或回调(我已经配置了8个Web应用程序和队列,我希望在启动所有应用程序后将通知返回给每个应用程序.) .我知道spring有应用程序监听器,可以在初始化Web应用程序后使用.但我不能在我的情况下使用它,因为我希望在初始化所有Web应用程序后收到通知.

**已编辑***

我添加了实现tomcat的监听器来记录消息.但我绝对不知道在哪里挂钩这个听众.

我尝试使用spring创建这个bean,并且通过向web.xml添加监听器两者都不起作用.

这是我的代码

public class KPTomcatListener implements LifecycleListener {

    private static final Logger LOG = LoggerFactory.getLogger(KPTomcatListener.class);
    /**
     * All the events of tomcat
     * AFTER_START_EVENT, 
     * AFTER_STOP_EVENT, 
     * BEFORE_START_EVENT, 
     * BEFORE_STOP_EVENT, 
     * DESTROY_EVENT, 
     * INIT_EVENT, 
     * PERIODIC_EVENT, 
     * START_EVENT, 
     * STOP_EVENT
     */
    private static int counter;

    @Override
    public void lifecycleEvent(LifecycleEvent arg0) {
        String event = arg0.getType();
        LOG.debug("Tomcat Envents: " + (++counter) + " :: " + event);
        if(event.equals("AFTER_START_EVENT")) {
            LOG.debug("Hey I've started");
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

Mar*_*mas 9

所有主要的Tomcat组件都实现org.apache.catalina.Lifecycle了包括添加功能的能力org.apache.catalina.LifecycleListener.这听起来像你想要AFTER_START_EVENTHost.

您可以在server.xml中配置侦听器,如下所示:

<Host ... >
  <Listener className="your.package.KPTomcatListener"/>
  <!-- Other nested elements go here -->
</Host>
Run Code Online (Sandbox Code Playgroud)

该类必须打包在JAR中,JAR放在Tomcat的lib目录中.


Hel*_*ira 5

如果有人想以编程方式执行此操作(例如使用嵌入式 Tomcat):

Tomcat tomcat = new Tomcat();
...
tomcat.getServer().addLifecycleListener(new KPTomcatListener());
tomcat.start()
Run Code Online (Sandbox Code Playgroud)