美文网首页Tomcat
TOMCAT源码分析-事件与监听

TOMCAT源码分析-事件与监听

作者: 晴天哥_王志 | 来源:发表于2018-11-14 18:04 被阅读42次

开篇

  作为Tomcat生命周期的补充,解释下事件的触发。

源码部分

  • 每个容器由于继承自LifecycleBase,当容器状态发生变化时都会调用fireLifecycleEvent方法生成LifecycleEvent,并且交由此容器的事件监听器处理。

  • 通过addLifecycleListener添加事件监听器添加到全局的lifecycleListeners。

  • 通过LifecycleBase的fireLifecycleEvent方法来触发。

public abstract class LifecycleBase implements Lifecycle {

    private final List<LifecycleListener> lifecycleListeners = 
                                   new CopyOnWriteArrayList<>();

    public void addLifecycleListener(LifecycleListener listener) {
        lifecycleListeners.add(listener);
    }

    protected void fireLifecycleEvent(String type, Object data) {
        LifecycleEvent event = new LifecycleEvent(this, type, data);
        for (LifecycleListener listener : lifecycleListeners) {
            listener.lifecycleEvent(event);
        }
    }

}

事件的触发机制

说明:

  • 1、Tomcat的fireLifecycleEvent的上层会通过startInternal()、stopInternal()、setStateInternal()进行调用。



说明:

  • 1、setStateInternal()方法内部会调用fireLifecycleEvent()方法。

  • 2、在LifecycleBase的内部的init()、stop()、start()、destroy()等方法内部都是触发事件执行。

相关文章

网友评论

    本文标题:TOMCAT源码分析-事件与监听

    本文链接:https://www.haomeiwen.com/subject/muijfqtx.html