zoukankan      html  css  js  c++  java
  • tomcat源码阅读之生命周期(LifeCycle)

    一、事件机制流程:

    1、     当外部事件源发生事件(比如点击了按钮,数据发生改变更新等)时,事件源将事件封装成事件对象Event;

    2、     将事件对象交由对应的事件派发器Dispatcher进行派发(将Event对象传递给事件派发器。事件派发器中存储了一个事件监听器列表,需要提前将监听器注册到派发器的),事件派发器会循环遍历监听器列表,将事件对象派发给监听器;

    3、     监听器接收到派发器派发过来的事件对象Event后,从Event中取出事件信息并进行响应;

    二、相关接口:

    1、LifeCycle接口:

     

    LifeCycle接口的实现类必须实现start和stop方法,供父组件调用,以实现对其进行启动/关闭操作。当servlet容器启动时,它必须启动该容器下的所有子容器对象(也即调用start方法),当servlet容器关闭时,它必须关闭该容器下的所有子容器对象(也即调用stop方法)。这种机制使得只需要启动一个组件就可以将全部应用的组件都启动起来。

    addLifeCycleListener/findLifeCycleListener/removeLifeCycleListener实现了对监听器的管理;

    2、LifeCycleEvent接口:

     

    封装了事件相关数据;

    3、LifeCycleListener接口:

     

    这个接口只有一个方法:LifeCycleEvent,也就是事件发生时,事件派发器将事件派发过来时调用的接口函数,同时传递了一个事件对象Event,通过这个Event可以获取到事件相关的数据信息并进行响应;

    三、LifeCycleSupport:

     

    1、     LifeCycleSupport接口定义了一个listeners的数组,可以通过接口函数addLifeCycleListener/removeLifeCycleListener/findLifeCycleListener来管理监听器列表;

    2、     当外部事件发生时,通过调用fireLifeCycleEvent来将事件派发给所有注册的监听器,代码如下:

     

  • 相关阅读:
    golang交叉编译:Linux
    vmware共享文件夹
    虚拟机-Debian服务器配置
    day38--MySQL基础二
    day19-IO多路复用
    mysql 对时间的处理
    mysql 优化
    Linux性能查看
    day18-socket 编程
    JAVA 消耗 CPU过高排查方法
  • 原文地址:https://www.cnblogs.com/laoxia/p/7783372.html
Copyright © 2011-2022 走看看