Tomcat服务器启动完成后回调

时间:2014-03-13 21:01:12

标签: java spring tomcat tomcat6

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

****** ******* EDITED

我已经实现了一个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");
        }
    }

}

2 个答案:

答案 0 :(得分:8)

所有主要的Tomcat组件都实现org.apache.catalina.Lifecycle,其中包括添加org.apache.catalina.LifecycleListener的功能。听起来你想要AFTER_START_EVENT的{​​{1}}。

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

Host

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

答案 1 :(得分:2)

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

<div class="input-group">
  <div>
    <span class="input-group-addon" id="faIcon">
      <i class="fa fa-search"></i>
    </span>
    <input class="form-control" id="input1-group1 " type="text" 
    name="search" placeholder="Enter Search Text" 
    [(ngModel)]="filter">
  </div>
  <div class="row">
    <div  class="col-md-7">
    From: <input type="date"  [(ngModel)]="fromDate" useValueAsDate >
    To: <input type="date"  [(ngModel)]="toDate" useValueAsDate>
    <button type="button" 
     (click)="searchByDate(fromDate,toDate)">Search</button>

     </div>
   </div>
</div>