美文网首页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