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来将事件派发给所有注册的监听器,代码如下:

     

  • 相关阅读:
    python快捷键的使用【摘抄】
    Jmeter5.1 Plugins Manager配置dummy使用jp@gc
    jmeter正则中常见的转义字符-笔记三
    测试人员问问题的技巧是什么?
    一个简单的python实现百度登录操作
    2.3 Go内置函数
    2.2 Go变量类型
    2.1Go语言特性
    1.2Go环境搭建之Mac
    1.1Go环境搭建之Linux
  • 原文地址:https://www.cnblogs.com/laoxia/p/7783372.html
Copyright © 2011-2022 走看看