7.2.1 Lifecycle 接口
Tomcat通过org.apache.catalina.Lifecycle 接口来统一管理生命周期,所有有生命周期的组件都要实现 Lifecycle 接口。
- 定义了十三个 String 类型常量,用于 LifecycleEvent 时间的 type 属性中,作用是区分组件发出的 LifecycleEvent 事件时的状态。
- 定义了三个监听器方法,用来添加、查找和删除 LifecycleListener 类型的监听器。
- 定义了4个生命周期的方法:init、start、stop 和 destroy
- 定义获取当前状态的方法 getState 和 getStateName,用来获取当前的状态。
7.2.2 LifecycleBase
Lifecycle的默认实现是 org.apache.catalina.LifecycleBase,所有的有生命周期的组件都直接或间接的继承自 LifecycleBase,LifecycleBase 为 Lifecycle 里的方法提供了默认实现:
- 监听器管理是专门使用了 LifecycleSupport 类完成,实现监听器的增删查。
- 生命周期方法中设置了相应的状态并调用了相应的模板方法:initInternal、startInternal、stopInternal 和 destroyInternal 方法。这四个方法由具体子类实现,对于子类来说执行生命周期的方法就是这四个方法。