Tomcat基本原理與啟動流程(一)

一、Tomcat server 基本結(jié)構(gòu)

Tomcat基本結(jié)構(gòu)

Tomcat最重要的兩個組件是Connector(連接器)和Container(容器)。其中Connector是可以被替換的,這樣可以提供給服務(wù)器設(shè)計者更多的選擇。多個Connector與一個Container封裝在一起(最主要的兩個組成部分),就組成了一個Service。

1、Connector(連接器)

? ? ?Connector在指定的端口監(jiān)聽客戶端的請求,并將從Socket連接接受到的請求封裝成Request發(fā)送給Engine處理,并將處理后的結(jié)果封裝為Response返回給客戶端。

? ? ?Connector使用ProtocolHandler來處理請求,不同的ProtocolHandler代表不同的連接類型。例如:Http1.1Protocol使用的是Socket連接。ProtocolHandler包含三個組成部分:Endpoint、Processor、Adapter。

1.1、Endpoint

? ? ?實現(xiàn)類TCP/IP協(xié)議,處理底層的Socket網(wǎng)絡(luò)連接。

? ? ?Endpoint的抽象實現(xiàn)AbstractEndpoint里面定義的Acceptor和AsyncTimeout兩個內(nèi)部類和一個Handler接口。Acceptor用于監(jiān)聽請求,AsyncTimeout用于檢查異步Request的超時,Handler用于處理接收到的Socket,在內(nèi)部調(diào)用Processor進(jìn)行處理。

1.2、Processor

? ? ?Processor實現(xiàn)了Http協(xié)議,在這將Endpoint接受到的Socket連接封裝成Request。

1.3、Adapter

? ? ?Adapter將封裝好的Request轉(zhuǎn)交給Engine做具體處理。

2、Container(容器)

? ? ?Container是一個接口,定義了下屬的各種容器。

2.1、Engine

? ? ?負(fù)責(zé)處理來自所屬service的全部請求,并經(jīng)處理后的結(jié)果返回給service。每個Engine下可以配置多個虛擬主機(Host),用來匹配不同的請求。同時設(shè)有一個默認(rèn)的Host,用來處理未能匹配到的請求。

2.2、Host

? ? ?每個Host代表一個虛擬主機,并匹配不同的域名。Host將匹配到的請求交給相應(yīng)的context來處理。這里的每個context代表一個Web應(yīng)用,一個Host可以包含多個Context。


Tomcat文件夾下默認(rèn)的Host

2.3、Context

? ? ?一個Context對應(yīng)一個應(yīng)用,也即應(yīng)用上下文,保存了應(yīng)用運行期間所需的數(shù)據(jù)結(jié)構(gòu)與中間變量。每個Context中包含多個Wrapper。

2.4、Wrapper

? ? ?每個Wrapper代表一個servlet,它負(fù)責(zé)管理servlet的裝載、初始化、執(zhí)行、資源回收。

二、Lifecycle

? ? ?用于管理組件的生命周期相,如:(init、start、stop、destroy)等操作。

1、LifecycleListener

? ? ?用于監(jiān)聽組件生命周期相關(guān)的事件。

2、LifecycleEvent

? ? ?當(dāng)有生命周期時間發(fā)生時,用于事件的時間、類型和數(shù)據(jù)等信息。

三、Tomcat的啟動過程

詳情請見下一篇

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容