Tomcat啟動流程
一、Tomcat 啟動流程
6、然后在調(diào)用后續(xù)組件的初始化操作。加載Tomcat的配置文件,初始化容器組件,監(jiān)聽對應的端口號,準備接受客戶端請求。
由于所有的組件均存在初始化、啟動、停止等生命周期方法,擁有生命周期管理的特性, 所以Tomcat在設計的時候, 基于生命周期管理抽象成了一個接口 Lifecycle ,而組件 Server、Service、Container、Executor、Connector 組件 , 都實現(xiàn)了一個生命周期的接口,從而具有了以下生命周期中的核心方法:
4、destroy():銷毀組件
1.1.2、各組件的默認實現(xiàn)
上面我們提到的Server、Service、Engine、Host、Context都是接口, 下圖中羅列了這些接口的默認實現(xiàn)類。
當前對于 Endpoint組件來說,在Tomcat中沒有對應的Endpoint接口, 但是有一個抽象類 AbstractEndpoint ,其下有三個實現(xiàn)類:NioEndpoint、Nio2Endpoint、AprEndpoint , 這三個實現(xiàn)類,分別對應于前面講解鏈接器 Coyote時, 提到的鏈接器支持的三種IO模型:NIO、NIO2、APR,Tomcat8.5版本中,默認采用的是 NioEndpoint。
ProtocolHandler:Coyote協(xié)議接口,通過封裝Endpoint和Processor , 實現(xiàn)針對具體協(xié)議的處理功能。Tomcat按照協(xié)議和IO提供了6個實現(xiàn)類。
AJP協(xié)議:
3、AjpAprProtocol:采用APR的IO模型,需要依賴于APR庫。
HTTP協(xié)議:
1、Http11NioProtocol:采用NIO的IO模型,默認使用的協(xié)議(如果服務器沒有安裝
3、Http11AprProtocol:采用APR的IO模型,需要依賴于APR庫。
源碼入口
目錄:org.apache.catalina.startupMainClass:BootStrap ‐‐‐‐> main(String[] args)
總結
從啟動流程圖中以及源碼中,我們可以看出Tomcat的啟動過程非常標準化, 統(tǒng)一按照生命周期管理接口Lifecycle的定義進行啟動。首先調(diào)用init() 方法進行組件的逐級初始化操作,然后再調(diào)用start()方法進行啟動。
每一級的組件除了完成自身的處理外,還要負責調(diào)用子組件響應的生命周期管理方法,
鏈接:https://www.cnblogs.com/wansw/p/10232613.html
(版權歸原作者所有,侵刪)

