Tomcat整體架構(gòu)

整體架構(gòu)

image.png

tomcat的整體架構(gòu)在server.xml配置文件中體現(xiàn)的整體視圖如上。

image.png

server組件

Tomcat的一個實例,通常一個JVM只能包含一個Tomcat實例;因此,一臺物理服務(wù)器上可以在啟動多 個JVM的情況下在每一個JVM中啟動一個Tomcat實例,每個實例分屬于一個獨立的管理端口。這是一個頂級組件。

  • 提供監(jiān)聽器機制,用于在整個Tomcat生命周期中對不同的事件進行處理。
  • 提供了Tomcat容器全局的命名資源實現(xiàn)。
  • 監(jiān)聽某個端口以接收SHUTDOWN命令。

Service組件

一個Service組件通常包含多個用于接收客戶端消息的Connector組件和一個處理請求的Engine組件。不同 的Connector組件使用不同的通信協(xié)議,如HTTP協(xié)議和AJP協(xié)議,此外還包含了若干個Executor組件,每個Executor都是一 個線程池,它可以為Service內(nèi)所有組件提供線程池。

Connector組件

主要的職責(zé)就是接收客戶端連接并接收消息報文,消息報文經(jīng)由它解析后送往Engine組件處理。因為存在不 同的通信協(xié)議所以我們需要不同的Connector組件,每種協(xié)議對應(yīng)一個Connector組件,目前Tomcat7包含HTTPAJP 兩種協(xié)議的Connector。Connector組件內(nèi)部實現(xiàn)也會根據(jù)網(wǎng)絡(luò)I/O的不同分為阻塞I/O和非阻塞I/O。

image.png

Engine組件

Tomcat內(nèi)部有4個級別的容器,分別是EngineHost、Context、Wrapper。Engine代表全局Servlet引擎,每 個Service組件只能包含一個Engine,但是Engine組件可以包含若干個Host容器組件。除了Host之外還包含如下組件。

  • Listener組件:可以在Tomcat生命周期中完成某些Engine容器相關(guān)工作的監(jiān)聽器。
  • AccessLog組件:客戶端的訪問日志,所有客戶端訪問都會被記錄。
  • Cluster組件:提供集群功能,可以將Engine容器需要共享的數(shù)據(jù)同步到集群中的其他Tomcat實例上,Engine中包含 的Host組件可以共享Cluster
  • Pipeline組件:Engine容器對請求進行處理的管道。
  • Realm組件:提供了Engine容器級別的用戶-密碼-權(quán)限的數(shù)據(jù)對象,配合資源認(rèn)證模塊使用。

Host組件

TomcatHost組件代表虛擬主機,這些虛擬主機可以存放若干Web應(yīng)用的抽象(Context容器)。除了Context之外 還包含如下組件。

  • Listener組件:可以在Tomcat生命周期中完成某些Engine容器相關(guān)工作的監(jiān)聽器。
  • AccessLog組件:客戶端的訪問日志,所有客戶端訪問都會被記錄。
  • Cluster組件:提供集群功能,可以將Host容器需要共享的數(shù)據(jù)同步到集群中的其他Tomcat實例上。
  • Pipeline組件:Host容器對請求進行處理的管道。
  • Realm組件:提供了Host容器級別的用戶-密碼-權(quán)限的數(shù)據(jù)對象,配合資源認(rèn)證模塊使用。

Context組件

Context組件是Web應(yīng)用的抽象,我們發(fā)開的Web應(yīng)用部署到Tomcat后運行時就會轉(zhuǎn)化成Context對象。它包 含了各種靜態(tài)資源、若干Servlet(Wrapper容器)以及各種其他動態(tài)資源。它主要包括如下組件。

  • Listener組件:可以在Tomcat生命周期中完成某些Context容器相關(guān)工作的監(jiān)聽器。
  • AccessLog組件:客戶端的訪問日志,所有客戶端訪問都會被記錄。
  • Pipeline組件:Context容器對請求進行處理的管道。
  • Realm組件:提供了Context容器級別的用戶-密碼-權(quán)限的數(shù)據(jù)對象,配合資源認(rèn)證模塊使用。
  • Loader組件:Web應(yīng)用加載器,用于加載Web應(yīng)用的資源,它要保證不同Web應(yīng)用之間的資源隔離。
  • Manager組件:會話管理器,用于管理Web容器的會話,包括維護會話的生成、更新、銷毀。
  • NamingResource組件:命名資源,它負(fù)責(zé)將server.xmlweb應(yīng)用的context.xml資源映射到內(nèi)存中。
  • Mapper組件:servlet映射器,它屬于context內(nèi)部的路由映射器,負(fù)責(zé)context容器的路由導(dǎo)航。
  • Wrapper組件:Context子容器。

Wrapper組件

Tomcat4個級別的容器中最小的,與之相對應(yīng)的是Servlet,一個Wrapper對應(yīng)一個Servlet。它主要包括如 下組件。

  • Servlet組件:ServletWeb應(yīng)用開發(fā)中常用的Servlet,我們會在Servlet中編寫好請求的邏輯處理。
  • ServletPool組件:Servlet對象池,當(dāng)Web應(yīng)用的Servlet實現(xiàn)了。SingleThreadModel接口時則會在Wrapper中產(chǎn)生 一個Servlet對象池。線程執(zhí)行時,需先從對象池中獲取一個Servlet對象,ServletPool組件能保證Servlet對象的線程 安全。
  • Pipeline組件:Wrapper容器對請求進行處理的管道。
?著作權(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ù)。

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

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