新增乙個web應用時將會建立乙個standardcontext容器,並且給context容器設定必要的引數url和path,乙個是訪問路徑而另外乙個是應用的實際物理路徑,這兩個引數就是tomcat中的配置引數.其中最重要的乙個配置是contextconfig,它負責整個web應用配置的解析工作.最後還要把這個context容器加到父容器host中.接下來就可以啟動tomcat了.
tomcat的啟動邏輯是基於觀察者設計模式設計的,所有的容器都會繼承lifecycle介面,它管理著容器的整個生命週期,所有容器的修改和狀態的改變都會由它去通知已經註冊的觀察者(listener).
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
5.修改啟動狀態,通知感興趣的觀察者(web應用的配置)
6.子容器的初始化
7.獲取serveletcontext並且設定必要的引數
8.初始化"load on startup"的servlet
web應用的初始化工作是在contextconfig的configurestart方法中實現的,應用初始化就是要解析web.xml檔案.
spring容器以及Spring啟動過程
beanfactory介面包含以下幾個基本方法 boolean containbean string name 判斷spring容器是否包含id為name的bean例項。getbean classrequiredtypr 獲取spring容器中屬於requiredtype型別的唯一的bean例項。o...
Tomcat的容器模型和啟動過程
最近在看tomcat的原始碼,對tomcat的架構深入地研究了下,下面讓我們來看下tomcat的容器模型 從上圖可以看出 tomcat 的容器分為四個等級,真正管理 servlet 的容器是 context 容器,乙個 context 對應乙個 web 工程。接下來我們來看下tomcat 啟動過程的...
docker學習 3 容器的啟動過程
這一節我們來稍微了解下docker原理性的東西 docker run i t ubuntu bin bash輸入上面這行命令,啟動乙個ubuntu容器時,到底發生了什麼?大致過程可以用下圖描述 首先系統要有乙個docker daemon的後台程序在執行,當剛才這行命令敲下時,1.docker cli...