TOMCAT源码分析-事件与监听

简介:

开篇

  作为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()等方法内部都是触发事件执行。
目录
相关文章
|
5月前
|
XML Java 应用服务中间件
SpringBoot配置外部Tomcat项目启动流程源码分析(长文)
SpringBoot配置外部Tomcat项目启动流程源码分析(长文)
59 0
|
10月前
|
存储 缓存 前端开发
07.Tomcat源码分析——类加载体系
由于在生产环境中,Tomcat一般部署在Linux系统下,所以本文将以 startup.sh shell脚本为准,对Tomcat的启动进行分析。
31 0
07.Tomcat源码分析——类加载体系
|
11月前
|
前端开发 Java 应用服务中间件
TOMCAT 源码分析 -- 一次请求
TOMCAT 源码分析 -- 一次请求
68 0
|
11月前
|
Java 应用服务中间件
TOMCAT 源码分析 -- 构建环境
TOMCAT 源码分析 -- 构建环境
78 0
|
11月前
|
监控 前端开发 Java
TOMCAT 源码分析 -- 启动(下)
TOMCAT 源码分析 -- 启动
71 0
|
11月前
|
XML 前端开发 Java
TOMCAT 源码分析 -- 启动(上)
TOMCAT 源码分析 -- 启动
107 0
|
11月前
|
Java 应用服务中间件 容器
Tomcat源码分析之中文乱码(一)
Tomcat源码分析之中文乱码(一)
137 0
|
11月前
|
算法 安全 应用服务中间件
Tomcat源码分析之 doGet方法(四)
Tomcat源码分析之 doGet方法(四)
34 0
|
11月前
|
设计模式 应用服务中间件 容器
Tomcat源码分析之 doGet方法(三)
Tomcat源码分析之 doGet方法(三)
42 0
|
11月前
|
应用服务中间件 索引
Tomcat源码分析之 doGet方法(二)
Tomcat源码分析之 doGet方法(二)
59 0