Tomcat整體架構(gòu)簡析

一、Tomcat 容器的總體架構(gòu)

Tomcat 容器主要用來提供servlet運(yùn)行環(huán)境,對其生命期進(jìn)行管理,從而提供各種服務(wù)service。

Tomcat 的兩大核心組件:Connector和Container共同組成了各種服務(wù)。如下圖所示:

Tomcat總體架構(gòu)分析圖

Connector

connector主要用于監(jiān)聽各種協(xié)議的發(fā)送的請求,并創(chuàng)建出請求響應(yīng)的Request和Response對象。

之后創(chuàng)建一個處理該請求的線程,傳入request和response對象,并提交到container中,等待container執(zhí)行。

另外Connector有多種實(shí)現(xiàn),一個Tomcat容器中通常具有一個Connector組成的集合。

Container

Container包含一個責(zé)任鏈設(shè)計(jì)模式,層層調(diào)用最終通過Servlet的包裝wrapper實(shí)現(xiàn)請求的調(diào)用。

Service與Server

Service是一個接口,負(fù)責(zé)管理Connector和Container。其標(biāo)準(zhǔn)實(shí)現(xiàn)類StandardService由Connector和Container組成。

Service接口同時也繼承了LifeCycle接口,方便對tomcat中各個組件的整體生命周期進(jìn)行管理。

Server接口負(fù)責(zé)管理Tomcat中的Service集合。通過Server接口,tomcat實(shí)現(xiàn)管理和運(yùn)行service,對外部暴露應(yīng)用。

二、Connector詳解

Connector的重要作用在于:接受請求,封裝請求和相應(yīng)對象,創(chuàng)建線程任務(wù)交給Container處理

Connector的信息可以在server.xml配置文件中看到。明顯的可以看到8080是TCP連接端口,8009是Apache服務(wù)器和tomcat

通信使用的端口等。

Connector在server start時進(jìn)行初始化,之后等待請求到來,通過httpProcessor包裝線程和請求對象,交給container處理。

流程如下圖所示:

請求處理時序圖

三、Container詳解

Tomcat容器中,Container實(shí)際上是用責(zé)任鏈設(shè)計(jì)模式。Container是所有容器的父接口,任何一種容器實(shí)現(xiàn)。

它具有四個子容器:Engine,Host,Context,Wrapper;四者成父子關(guān)系

Engine是整個tomcat容器的完整servlet引擎,通過它在最上層調(diào)用;

Host代表Engine中的一個虛擬機(jī),這個Host的作用在于運(yùn)行多個應(yīng)用并區(qū)分它們(Context);

Context是Servlet的基本運(yùn)行環(huán)境,它維護(hù)了servlet與url、絕對路徑的關(guān)系等。每個應(yīng)用就是一個Context;

Wrapper是對Servlet原生對象的包裝,Wrapper便于對LifeCycle生命周期進(jìn)行管理

四、lifecycle接口與生命周期

上面已經(jīng)講到,Tomcat中幾乎所有的接口都實(shí)現(xiàn)了LifeCycle接口,這也使得,整個tomcat的啟動和關(guān)閉過程中,可以直接

通過責(zé)任鏈設(shè)計(jì)模式Lifecycle接口實(shí)現(xiàn)對所有對象的生命周期管理。同時可以在各個子接口中實(shí)現(xiàn)自己的功能呢。

例如在server 的Start過程中可以解析默認(rèn)的server.xml文件,而container的start過程中會解析web.xml等。

在stop的時候,container又可以處理服務(wù)器緩存的session。將他們持久化 到磁盤上。

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

相關(guān)閱讀更多精彩內(nèi)容

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