分享 詳細講解Tomcat之系統架構

2021-09-24 09:29:25 字數 2156 閱讀 2085

tomcat 或者 jetty 就是乙個「http 伺服器 + servlet 容器」,我們也叫它們 web 容器。

spring 框架就是對 servlet 的封裝,spring 應用本身就是乙個 servlet,而 servlet 容器是管理和執行 servlet 的。

servlet 介面和 servlet 容器這一整套規範叫作 servlet 規範。tomcat 和 jetty 都按照 servlet 規範的要求實現了 servlet 容器。

servlet 容器工作流程:

當客戶請求某個資源時,http 伺服器會用乙個 servletrequest 物件把客戶的請求資訊封裝起來,然後呼叫 servlet 容器的 service 方法,servlet 容器拿到請求後,根據請求的 url 和 servlet 的對映關係,找到相應的 servlet,如果 servlet 還沒有被載入,就用反射機制建立這個 servlet,並呼叫 servlet 的 init 方法來完成初始化,接著呼叫 servlet 的 service 方法來處理請求,把 servletresponse 物件返回給 http 伺服器,http 伺服器會把響應傳送給客戶端。

servlet 規範提供了兩種擴充套件機制:filter和listener。

tomcat 要實現 2 個核心功能:

因此 tomcat 設計了兩個核心元件聯結器(connector)和容器(container)來分別做這兩件事情。聯結器負責對外交流,容器負責內部處理。

1,聯結器

聯結器需要完成 3 個高內聚的功能:

因此 tomcat 的設計者設計了 3 個元件來實現這 3 個功能,分別是 endpoint、processor 和 adapter。

endpoint 和 processor 放在一起抽象成了 protocolhandler 元件,聯結器用 protocolhandler 來處理網路連線和應用層協議。

endpoint 是乙個介面,它的抽象實現類 abstractendpoint 裡面定義了兩個內部類:acceptor 和 socketprocessor。其中 acceptor 用於監聽 socket 連線請求。socketprocessor 用於處理接收到的 socket 請求。

endpoint 接收到 socket 連線後,生成乙個 socketprocessor 任務提交到執行緒池去處理,socketprocessor 的 run 方法會呼叫 processor 元件去解析應用層協議,processor 通過解析生成 request 物件後,會呼叫 adapter 的 service 方法。

2,容器

每乙個容器都有乙個 pipeline 物件。

3,乙個請求在 tomcat 中流轉的過程

4,startup.sh 啟動 tomcat 的過程:

Tomcat日誌系統詳細配置

tomcat 日誌資訊分為兩 類 一是執行日誌,它主要記錄執行的一些資訊,尤其是一些異常錯誤日誌資訊 二是訪問日誌,它記錄訪問的時間 ip 訪問的資料等相關資訊 1.訪問日誌的配置 編輯 conf server.xml 檔案 注 是 tomcat 的安裝目錄.如不需要訪問日誌,則注釋配置如下 pat...

Python入門之元祖tuple詳細講解

一 元組的建立 1.元組 tuple 不可變資料型別 元組內可以儲存任意資料型別 t 1,2.3,true,westos 整型 浮點型 布林型 字元型 print t print type t 2.元組中可以巢狀列表 t1 1,2,3 4 print t1 print t1 t2 westos 字串...

最短路徑之Dijkstra演算法詳細講解

最短路徑演算法 在日常生活中,我們如果需要常常往返a地區和b地區之間,我們最希望知道的可能是從a地區到b地區間的眾多路徑中,那一條路徑的路途最短。最短路徑問題是圖論研究中的乙個經典演算法問題,旨在尋找圖 由結點和路徑組成的 中兩結點之間的最短路徑。演算法具體的形式包括 確定起點的最短路徑問題 即已知...