2 TOMCAT學習 TOMCAT的啟動過程

2021-09-19 17:52:35 字數 1978 閱讀 9738

load方法會根據配置檔案載入整個tomcat,將tomcat的所有元件按照設計好的結構裝配起來。整個load的過程中最重要的地方在catalina 中。catalina 的load方法會去解析server.xml檔案並且載入檔案中包含的元件。

以上述檔案為例。

tomcat解析server.xml的時序圖如下

1.  catalina呼叫自己的parse方法開始解析server.xml

2. 讀取到server標籤,例項化server,將server關聯到catalina。

3. 讀到listener標籤,將listener關聯到server。

4. 讀到service標籤,將service關聯到server。

5. 讀到connector標籤,將connector關聯到service。

6. 讀到engine標籤,將engine關聯到service。

7. 讀到host標籤,將host關聯到engine。

8. 讀到context標籤,將context關聯到host。

實際上整個load的過程就是從外到內,一步步例項化,並將子容器關聯到父容器的過程。

start方法會一層層的啟動tomcat,直至整個tomcat啟動完成或者遇到異常啟動失敗。

catalina呼叫server的啟動方法。

server遍歷自己的service列表,啟動所有的service。

service啟動connector列表中所有的connector。

service啟動預設容器engine。

engine啟動所有的直接子容器host。

host部署並啟動所有的context。

這裡比較重要的兩個點:

1. host的start方法中會部署所有的context。(在之前的文章中說過,context容器對應的是servlet應用)

2 tomcat的訊息傳遞。

這部分的內容也同上部分,在 url 和tomcat的文件 url 上已經講得很清楚。我主要對其進行理解和消化,並從中總結一些東西來,為我所用。這部分中最困難的是pipeline部分,即資料流在各個容器中的傳遞,依靠的是pipeline這個東西來來進行訊息的傳遞的實現,這樣也可以進行訊息傳遞解偶,而且...

學習tomcat 小記(2)

size medium 1 container container必須實現org.apache.catalina.container介面。然後將container例項設定到connector的setcontainer方法中。這樣,connector就可以呼叫container的invoke方法了。首...

Tomcat學習 如何檢視Tomcat版本號

進入tomcat bin目錄下,shift 右鍵 在此處開啟命令提示框,開啟命令提示符視窗,輸入命令version.bat,就可以看到如下結果 d apache tomcat 8.5.31 bin version.bat using catalina base d apache tomcat 8.5...