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 方法。這四個方法由具體子類實現,對于子類來說執行生命周期的方法就是這四個方法。