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

