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...