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