日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

1. 瀏覽器訪問服務器的流程

瀏覽器訪問服務器使用的是 Http協議 , Http協議 是應用層協議,用于定義數據通信的格式,具體的數據傳輸使用的是 TCP/IP協議 。

Tomcat 系統架構與原理剖析

 

2. Tomcat 系統總體架構

Tomcat是一個 Http服務器 (能夠接受并且處理 http 請求,所以 Tomcat 是一個 Http服務器 )。

2.1. Tomcat 處理請求大致流程

Tomcat 系統架構與原理剖析

 

HTTP服務器接收到請求之后把請求交給 Servlet容器 來處理, Servlet容器 通過 Servlet接? 調?業務類。

Servlet接?和 Servlet容器 這?整套內容叫作 Servlet規范 。

Servlet容器有解耦的作用,避免 Http服務器 和 業務類 的直接耦合。

由于 Tomcat 根據 Servlet規范 實現了 Servlet容器 ,同時它又具有 Http服務器 的功能,所以 Tomcat 擁有兩個重要身份:

  • Servlet容器
  • Http服務器

2.2. Tomcat Servlet容器處理流程

Tomcat 系統架構與原理剖析

 

當用戶請求某個URL資源時:

  • 1) Http服務器 會把請求信息封裝成 Request對象 ,再轉化成 ServletRequest對象 ,傳入 Servlet容器 ;
  • 2) Servlet容器 接收到請求后,根據 URL 和 Servlet 的映射關系(必要的配置信息),找到對應的 Servlet ;
  • 3) 如果 Servlet 還沒有被加載,使用 反射技術 創建該 Servlet ,并調用 Servlet 的 init 方法來完成初始化;
  • 4) 調用 Servlet 的 service 方法處理請求,將請求處理結果封裝成 ServletResponse 對象,返回給 Http服務器 ;
  • 5) Http服務器 將接收到的 ServletResponse對象 轉化成 Response對象 ,返回給客戶端。

2.3. Tomcat 系統總體架構

Tomcat 系統架構與原理剖析

 

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

  • 連接器:負責對外交流 ,處理Socket連接,負責 網絡字節流 和 Request/Response 對象的轉化;
  • 容器:負責內部處理 ,加載和管理Servlet,以及具體請求的處理。

3. Tomcat 連接器組件 Coyote

3.1. Coyote簡介

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

Coyote負責的是 具體協議(應用層) 和 IO(傳輸層) 的相關內容:

  • Coyote 封裝了底層的網絡通信(Socket請求及響應處理)
  • Coyote 使 Catalina容器(容器組件) 與具體的 請求協議 和 IO操作方式 完全解耦
  • Coyote 將 Socket 輸入轉化封裝為 Request對象 ,進一步交給 Catalina容器 處理,處理完成后, Catalina容器 通過 Coyote 提供的 Response對象 將結果寫入輸出流
Tomcat 系統架構與原理剖析

 

Tomcat (Coyote)支持多種應用層協議和I/O模型:

Tomcat 系統架構與原理剖析

 

在 8.0 版本之前, Tomcat 默認采用的 I/O模型 是 BIO , 8.0 版本之后,改為 NIO 。

3.2. Coyote內部組件及流程

Tomcat 系統架構與原理剖析

 

Coyote內部各組件的作用:

組件作用EndPointEndPoint 是 Coyote 的通信端點,即通信監聽的接口,是具體 Socket 接收和發送的處理器,是對 傳輸層的抽象 。因此 EndPoint 用來實現 TCP/IP協議ProcessorProcessor 是 Coyote 的協議處理接口,用來實現 HTTP協議 , Processor 接收來? EndPoint 的 Socket ,讀取字節流解析成 Tomcat Request 和 Response對象 ,并通過 Adapter 將其提交到容器處理, Processor 是對應?層協議的抽象ProtocolHandlerCoyote 協議接?,通過 Endpoint 和 Processor , 實現針對具體協議的處理能?。 Tomcat 按照協議和I/O 提供了6個實現類 : AjpNioProtocol , AjpAprProtocol , AjpNio2Protocol , Http11NioProtocol , Http11Nio2Protocol , Http11AprProtocolAdapterCoyoteAdapter 負責將 Tomcat Request 轉成 ServletRequest ,再調?容器

4. Tomcat Servlet 容器 Catalina

4.1. Tomcat模塊分層結構圖和Catalina的地位

Tomcat是由一系列可配置(conf/server.xml)的組件構成的 Web容器 ,而 Catalina 是 Tomcat 的 Servlet容器 。

Tomcat本質上就是?款 Servlet容器 , 因為 Catalina 才是 Tomcat 的核? , 其他模塊都是為 Catalina 提供?撐的。 ?如 : 通過 Coyote 模塊提供鏈接通信, Jasper 模塊提供 JSP引擎 , Naming 提供 JNDI服務 , Juli 提供 ?志服務 。

Tomcat 系統架構與原理剖析

 

4.2. Servlet 容器 Catalina 的結構

我們往往有?個認識, Tomcat 就是?個 Catalina 的實例,因為 Catalina 是 Tomcat 的核?。

Tomcat/Catalina實例:

Tomcat 系統架構與原理剖析

 

其實,可以認為整個 Tomcat 就是?個 Catalina實例 , Tomcat 啟動的時候會初始化這個實例, Catalina實例 通過加 server.xml 完成其他實例的創建,創建并管理?個 Server , Server 創建并管理多個 服務(Service) ,每個 服務(Service) ?可以有多個 Connector 和?個 Container 。

  • Catalina負責解析Tomcat的配置文件(server.xml),以此來創建Server組件并進行管理
  • Server負責組裝并啟動Servlaet引擎,Tomcat連接器。Server通過實現Lifecycle接?,提供了?種優雅的啟動和關閉整個系統的?式
  • Service服務是Server內部的組件,?個Server包含多個Service。它將若?個Connector組件綁定到?個Container
  • Container容器,負責處理?戶的servlet請求,并返回對象給web?戶的模塊

4.3. Container組件的具體結構

Container組件下有?種具體的組件,分別是 Engine 、 Host 、 Context 和 WrApper 。這4種組件(容器)是??關系。 Tomcat 通過?種分層的架構,使得 Servlet 容器具有很好的靈活性。

  • Engine表示整個Catalina的Servlet引擎,?來管理多個虛擬站點,?個Service最多只能有?個Engine,但是?個引擎可包含多個Host
  • Host代表?個虛擬主機,或者說?個站點,可以給Tomcat配置多個虛擬主機地址,??個虛擬主機下可包含多個Context
  • Context表示?個Web應?程序, ?個Web應?可包含多個Wrapper
  • Wrapper表示?個Servlet,Wrapper 作為容器中的最底層,不能包含?容器

分享到:
標簽:Tomcat
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定