1. 程式人生 > >Tomcat 啟動的時候幹了些啥

Tomcat 啟動的時候幹了些啥

官方的啟動說明文件位置 :Tomcat.x.x.x/webapps/docs/architecture/startup 目錄下 

我這裡檢視的是Tomecat7 的 Tomcat 5 Startup Sequence 文件如下點選開啟連結  在Eclipse中的類載入日誌如下點選開啟連結

核心類

1:org.apache.catalina.startup.Bootstrap 

2:org.apache.catalina.startup.Catalina

文件中顯示大體分為兩步

1:當接受到啟動命令時 初始化類載入器 初始化核心類的 init()

2:初始化Tomcat 的資訊 載入資源 等待請求的到來

當接受到啟動命令時 詳細動作(第一步)

在 org.apache.catalina.startup.Bootstrap 類的 init() 方法中 1:裝配類載入器 commonLoader  / sharedLoader / catalinaLoader 2:載入啟動管理類 org.apache.catalina.startup.Catalina

第二步又分多小步

1:初始化Tomcat 資訊

1) 設定等待引數為true
2) 初始化堆疊/讀取配置/啟動監聽/初始化多個結果集/輸出載入資訊/初始化以及註冊所有物件為JMX代理 (在這一步中設定了單一的入口連結 http://127.0.0.1:8080)

2:Catalina 的初始化

1)首先是載入服務StandardService -> starts Engine (ContainerBase ->Logger,Loader,Realm,Cluster etc)類的載入與初始化 / 開啟執行緒上下文/載入需要部署的專案尋找路徑是(webapps & conf/Catalina/localhost/*.xml) 然後載入處理應用的web.xml 2)啟動一個執行緒來監聽context/web.xml 如果更改就重新載入

3:當接收到請求 (會一直呼叫協議處理器)

1)單獨開啟的一個執行緒 等待接受請求的到來 2)獲取到一個請求時分配一個TCP連結來處理請求(提供了一個容器) (HTTP 請求在一個內部緩衝區中解析 [請求行/標頭] 並將結果儲存在結果集中 request ) 3)解析完請求之後會將引數繫結到執行緒/並裝載要使用的類以及例項的編譯JSP 4)呼叫Servlet PS: 1:以上內容簡化了很多的步驟 更為詳細可以參考官方的文件 2:在類載入日誌中列印的是Tomcat啟動後的所有類的載入 包含了JDK 中的 434行載入了類org.apache.catalina.startup.Bootstrap
然後載入日誌相關類 498行載入了類org.apache.catalina.startup.CatalinaProperties 819行載入了類org.apache.catalina.startup.Catalina