Tomcat體系結構

Tomcat體系結構

Tomcat 設計了兩個核心組件連接器(Connector)和容器(Container)來完成 Tomcat 的兩大核心功能。

連接器,負責對外交流: 處理Socket連接,負責⽹絡字節流與Request和Response對象的轉化;

容器,負責內部處理:加載和管理Servlet,以及具體處理Request請求;

連接器組件Coyote

Coyote 是Tomcat 中連接器的組件名稱 , 是對外的接口。客戶端通過Coyote與服務器建立連接、發送請求並接受響應 。

在這裏插入圖片描述

  • EndPoint

EndPoint 是 Coyote 通信端點,即通信監聽的接⼝,是具體Socket接收和發送處理器,是對傳輸層的抽象,因此EndPoint用來實現TCP/IP協議的。

  • Processor

Processor 是Coyote 協議處理接口 ,如果說EndPoint是⽤來實現TCP/IP協議的,那麼Processor用來實現HTTP協議,Processor接收來自EndPoint的Socket,讀取字節流解析成Tomcat Request和Response對象,並通過Adapter將其提交到容器處理,Processor是對應用層協議的抽象。

  • ProtocolHandler

Coyote 協議接口, 通過Endpoint 和 Processor , 實現針對具體協議的處理能力。Tomcat 按照協議和I/O 提供6個實現類:AjpNioProtocol ,AjpAprProtocol, AjpNio2Protocol , Http11NioProtocol,Http11Nio2Protocol ,Http11AprProtocol。

  • Adapter

由於協議不同,客戶端發過來的請求信息也不盡相同,Tomcat定義了自己的Request類來封裝這些請求信息。ProtocolHandler接口負責解析請求並生成Tomcat Request類。但是這個Request對象不是標準ServletRequest,不能用Tomcat Request作爲參數來調⽤容器。Tomcat設計者的解決方⽅案是引入CoyoteAdapter,這是適配器模式的經典運用,連接器調用CoyoteAdapter的Sevice方法,傳入的是Tomcat Request對象,CoyoteAdapter負責將Tomcat Request轉成ServletRequest,再調用容器。

Tomcat Servlet 容器 Catalina

Tomcat就是一個Catalina的實例,因爲Catalina是Tomcat的核心

Tomcat/Catalina實例

在這裏插入圖片描述

  • Catalina

負責解析Tomcat的配置文件(server.xml) , 以此來創建服務器Server組件並進行管理

  • Server

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

  • Service

服務是Server內部的組件,一個Server包含多個Service。它將若干個Connector組件綁定到一個Container

  • Container

容器,負責處理用戶的servlet請求,並返回對象給web用戶的模塊Container組件下有幾種具體的組件,分別是Engine、Host、Context和Wrapper。這4種組件(容器)是父子關係。Tomcat通過一種分層的架構,使得Servlet容器具有很好的靈活性。

​ 1.Engine

​ 表示整個Catalina的Servlet引擎,用來管理多個虛擬站點,一個Service最多只能有一個Engine,但是一個引 擎可包含多個Host。

​ 2.Host

​ 代表一個虛擬主機,或者說一個站點,可以給Tomcat配置多個虛擬主機地址,而一個虛擬主機下可包含多個 Context。

​ 3.Context

​ 表示一個Web應用程序, 一個Web應⽤可包含多個Wrapper。

​ 4.Wrapper

​ 表示一個Servlet,Wrapper 作爲容器中的最底層,不能包含子容器。

​ 上述組件的配置其實就體現在conf/server.xml中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章