天天看點

初探Tomcat源碼 (4) —— Catalina容器結構

        Tomcat是一個由一系列可配置的元件構成的Web容器,而Catalina是Tomcat的servlet容器。

Catalina主要元件的結構如下:

初探Tomcat源碼 (4) —— Catalina容器結構

        如上圖所示,Catalina負責管理Server,而Server表示着整個伺服器。Server下面有多個服務Service,每個服務都包含着多個連接配接器元件Connector和一個容器元件Container。

        一個連接配接器元件主要包含着一個Connector和多個Processor,Connector負責監聽客戶請求,然後交給Processor來尋找Container處理。

        和連接配接器關聯的容器一般指引擎Engine,Host、Context和Wrapper也都是容器,這裡是層層嵌套的關系,最底層的Wrapper包裹着Servlet,最後請求都會傳遞到Servlet來執行。

-----------------------------------------------------

在Tomcat啟動的時候,會初始化一個Catalina執行個體。       

        Catalina負責的是解析Tomcat的配置檔案,以此來建立伺服器Server元件,并根據指令來對其進行管理。

        Server伺服器表示整個Catalina Servlet容器以及其它元件,負責組裝并啟動Servlet引擎,Tomcat連接配接器。Server通過實作Lifecycle接口,提供了一種優雅的啟動和關閉整個系統的方式。

        Service服務是Server内部的元件,一個Server包含多個Service。它将若幹個Connector元件綁定到一個Container(Engine)上。

        Connector連接配接器,處理與用戶端的通信,它負責接收客戶請求,然後轉向相關的容器處理,最後向客戶傳回響應結果。

連接配接器包含4個重要的部分:連接配接器類HttpConnector,支撐類HttpProcessor,請求類HttpRequest和響應類HttpResponse

        Container容器,負責處理使用者的servlet請求,并傳回對象給web使用者的子產品。

Tomcat中定義了四種容器:

· Engine: 表示整個Catalina的servlet引擎,一個引擎包含若幹個Host;

· Host:   表示一個虛拟主機,一個主機包含若幹個Context;

· Context:表示一個Web應用,一個上下文包含若幹個wrapper;

· Wrapper:表示一個獨立的servlet,包裝器作為容器中的最底層,不能包含子容器。

最後執行請求的,是Wrapper下的servlet,其他的上層結構,是負責加載配置項,以及查找合适的Wrapper來invoke()。

— — 參考《How Tomcat Works》   Tomcat 5 的結構