Tomcat的容器模型和啟動過程

2021-07-10 23:41:57 字數 991 閱讀 2335

最近在看tomcat的原始碼,對tomcat的架構深入地研究了下,下面讓我們來看下tomcat的容器模型:

從上圖可以看出 tomcat 的容器分為四個等級,真正管理 servlet 的容器是 context 容器,乙個 context 對應乙個

web 工程。

接下來我們來看下tomcat 啟動過程的時序圖:

當 context 容器初始化狀態設為 init 時,新增在 contex 容器的 listener 將會被呼叫。contextconfig 繼承了

lifecyclelistener 介面,它是在呼叫清單 3 時被加入到 standardcontext 容器中。contextconfig 類會負責整個 web

應用的配置檔案的解析工作。

contextconfig 的 init 方法將會主要完成以下工作:

1. 建立用於解析 xml 配置檔案的 contextdigester 物件

2. 讀取預設 context.xml 配置檔案,如果存在解析它

3. 讀取預設 host 配置檔案,如果存在解析它

4. 讀取預設 context 自身的配置檔案,如果存在解析它

5. 設定 context 的 docbase

contextconfig 的 init 方法完成後,context 容器的會執行 startinternal 方法,這個方法啟動邏輯比較複雜,主要包

括如下幾個部分:

1. 建立讀取資源檔案的物件

2. 建立 classloader 物件

3. 設定應用的工作目錄

4. 啟動相關的輔助類如:logger、realm、resources 等

5. 修改啟動狀態,通知感興趣的觀察者(web 應用的配置)

6. 子容器的初始化

7. 獲取 servletcontext 並設定必要的引數

8. 初始化「load on startup」的 servlet

好了先寫到這,下次我會寫一下tomcat中使用到的設計模式。

Servlet容器的啟動過程 Tomcat為例子

新增乙個web應用時將會建立乙個standardcontext容器,並且給context容器設定必要的引數url和path,乙個是訪問路徑而另外乙個是應用的實際物理路徑,這兩個引數就是tomcat中的配置引數.其中最重要的乙個配置是contextconfig,它負責整個web應用配置的解析工作.最後...

tomcat專案啟動過程

1 startup 讀取配置檔案配置的jar,lib下的jar,環境變數配置的jar。2 catalina 讀取tomcat內建的使用者管理介面,讀取配置tomcat user.xml。3 讀取server.xml,根據層級關係設定到services物件中。每個節點都有自己的listener 用來根...

tomcat啟動過程詳解

基於j a的web 應用程式是 servlet jsp 頁面 靜態頁面 類和其他資源的集合,它們可以用標準方式打包,並執行在來自多個 商的多個容器。web 應用程式存在於結構化層次結構的目錄中,該層次結構是由 j a servlet 規範定義的。web 應用程式的根目錄包含直接儲存或儲存在子資料夾中...