Tomcat生命週期管理

池塘里洗澡的鸭子發表於2024-04-25

一、生命週期統一介面Lifecycle:

  在自定義Mini-Tomcat之動態資源訪問實現中已分析tomcat的兩個功能,透過server.xml配置可以進行設定。下面看看Tomcat的實際的server.xml配置:

          

  從配置結構看,Tomcat內部架構中各個核心元件是包含於被包含的關係,往下層層包含。其以容器的方式來組織整個系統架構,類似資料結構中的樹——父節點沒有其他節點,其他節點有且僅有一個父節點,每個父節點有零個或多個子節點。如下圖:

          

  鑑於此架構,可以透過父容器啟動其子容器,這樣只要啟動根容器就可以把其他所有容器都啟動,達到統一啟動、停止、關閉的效果。除錯程式碼發現解析server.xml後進行各元件初始化的過程中始終呼叫LifecycleBase中的init方法,透過UML圖分析結構如下:

          

  所以可知Tomcat架構設計了一個用Lifecycle管理啟動、停止、關閉所有元件的統一介面。LifeCycle定義如下:

          

二、生命週期狀態轉化

  檢視頂層介面Lifecycle相關資訊,其定義了實現了其介面元件的生命週期中的所有狀態。具體狀態轉換如下圖:

          

  圖中狀態轉化的觸發點清晰標註,有auto,有透過方法觸發。這些狀態的定義在列舉LifecycleState中:

          

三、生命週期事件監控

  在Lifecycle的UML圖中有一個Listener的介面,簡化該UML中類並新增一個Event類,如下:

          

  可以參考Spring常用配置之Application Event(事件)

                

相關文章