7.2.1 Lifecycle 接口
Tomcat通過(guò)org.apache.catalina.Lifecycle 接口來(lái)統(tǒng)一管理生命周期马靠,所有有生命周期的組件都要實(shí)現(xiàn) Lifecycle 接口。
- 定義了十三個(gè) String 類型常量蔼两,用于 LifecycleEvent 時(shí)間的 type 屬性中甩鳄,作用是區(qū)分組件發(fā)出的 LifecycleEvent 事件時(shí)的狀態(tài)。
- 定義了三個(gè)監(jiān)聽(tīng)器方法额划,用來(lái)添加妙啃、查找和刪除 LifecycleListener 類型的監(jiān)聽(tīng)器。
- 定義了4個(gè)生命周期的方法:init俊戳、start揖赴、stop 和 destroy
- 定義獲取當(dāng)前狀態(tài)的方法 getState 和 getStateName,用來(lái)獲取當(dāng)前的狀態(tài)品抽。
7.2.2 LifecycleBase
Lifecycle的默認(rèn)實(shí)現(xiàn)是 org.apache.catalina.LifecycleBase储笑,所有的有生命周期的組件都直接或間接的繼承自 LifecycleBase甜熔,LifecycleBase 為 Lifecycle 里的方法提供了默認(rèn)實(shí)現(xiàn):
- 監(jiān)聽(tīng)器管理是專門(mén)使用了 LifecycleSupport 類完成圆恤,實(shí)現(xiàn)監(jiān)聽(tīng)器的增刪查。
- 生命周期方法中設(shè)置了相應(yīng)的狀態(tài)并調(diào)用了相應(yīng)的模板方法:initInternal腔稀、startInternal盆昙、stopInternal 和 destroyInternal 方法。這四個(gè)方法由具體子類實(shí)現(xiàn)焊虏,對(duì)于子類來(lái)說(shuō)執(zhí)行生命周期的方法就是這四個(gè)方法淡喜。