91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Tomcat系統架構是怎樣的

發布時間:2022-02-17 15:11:02 來源:億速云 閱讀:151 作者:iii 欄目:開發技術

這篇文章主要介紹“Tomcat系統架構是怎樣的”,在日常操作中,相信很多人在Tomcat系統架構是怎樣的問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Tomcat系統架構是怎樣的”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

Tomcat系統架構是怎樣的

Tomcat的組織結構

Tomcat是一個基于組件的服務器,它的構成組件都是可配置的,其中最外層的是Catalina servlet容器,其他組件按照一定的格式要求配置在這個頂層容器中。

Tomcat的各種組件都是在Tomcat安裝目錄下的/conf/server.xml文件中配置的。

由Server.xml的結構看Tomcat的體系結構

Tomcat系統架構是怎樣的

由上可得出Tomcat的體系結構:

Tomcat系統架構是怎樣的

由上圖可看出Tomca的心臟是兩個組件:Connecter和Container。一個Container可以選擇多個Connecter,多個Connector和一個Container就形成了一個Service。Service可以對外提供服務,而Server服務器控制整個Tomcat的生命周期。

組件的生命線“Lifecycle”

Service 和 Server 管理它下面組件的生命周期。

Tomcat 中組件的生命周期是通過 Lifecycle 接口來控制的,組件只要繼承這個接口并實現其中的方法就可以統一被擁有它的組件控制了,這樣一層一層的直到一個最高級的組件就可以控制 Tomcat 中所有組件的生命周期,這個最高的組件就是 Server,而控制 Server 的是 Startup,也就是您啟動和關閉 Tomcat。

Tomca的兩大組件:Connecter和Container

Connecter組件

一個Connecter將在某個指定的端口上偵聽客戶請求,接收瀏覽器的發過來的 tcp 連接請求,創建一個 Request 和 Response 對象分別用于和請求端交換數據,然后會產生一個線程來處理這個請求并把產生的 Request 和 Response 對象傳給處理Engine(Container中的一部分),從Engine出獲得響應并返回客戶。

Tomcat中有兩個經典的Connector,一個直接偵聽來自Browser的HTTP請求,另外一個來自其他的WebServer請求。Cotote HTTP/1.1 Connector在端口8080處偵聽來自客戶Browser的HTTP請求,Coyote JK2 Connector在端口8009處偵聽其他Web Server的Servlet/JSP請求。

Connector 最重要的功能就是接收連接請求然后分配線程讓 Container 來處理這個請求,所以這必然是多線程的,多線程的處理是 Connector 設計的核心。

Container組件

Container的體系結構如下:

Tomcat系統架構是怎樣的

Container是容器的父接口,該容器的設計用的是典型的責任鏈的設計模式,它由四個自容器組件構成,分別是Engine、Host、Context、Wrapper。這四個組件是負責關系,存在包含關系。通常一個Servlet class對應一個Wrapper,如果有多個Servlet定義多個Wrapper,如果有多個Wrapper就要定義一個更高的Container,如Context。

Context 還可以定義在父容器 Host 中,Host 不是必須的,但是要運行 war 程序,就必須要 Host,因為 war 中必有 web.xml 文件,這個文件的解析就需要 Host 了,如果要有多個 Host 就要定義一個 top 容器 Engine 了。而 Engine 沒有父容器了,一個 Engine 代表一個完整的 Servlet 引擎。

1、Engine 容器

Engine 容器比較簡單,它只定義了一些基本的關聯關系

2、Host 容器

Host 是 Engine 的字容器,一個 Host 在 Engine 中代表一個虛擬主機,這個虛擬主機的作用就是運行多個應用,它負責安裝和展開這些應用,并且標識這個應用以便能夠區分它們。它的子容器通常是 Context,它除了關聯子容器外,還有就是保存一個主機應該有的信息。

3、Context 容器

Context 代表 Servlet 的 Context,它具備了 Servlet 運行的基本環境,理論上只要有 Context 就能運行 Servlet 了。簡單的 Tomcat 可以沒有 Engine 和 Host。Context 最重要的功能就是管理它里面的 Servlet 實例,Servlet 實例在 Context 中是以 Wrapper 出現的,還有一點就是 Context 如何才能找到正確的 Servlet 來執行它呢? Tomcat5 以前是通過一個 Mapper 類來管理的,Tomcat5 以后這個功能被移到了 request 中,在前面的時序圖中就可以發現獲取子容器都是通過 request 來分配的。

4、Wrapper 容器

Wrapper 代表一個 Servlet,它負責管理一個 Servlet,包括的 Servlet 的裝載、初始化、執行以及資源回收。Wrapper 是最底層的容器,它沒有子容器了,所以調用它的 addChild 將會報錯。

Wrapper 的實現類是 StandardWrapper,StandardWrapper 還實現了擁有一個 Servlet 初始化信息的 ServletConfig,由此看出 StandardWrapper 將直接和 Servlet 的各種信息打交道。

Tomcat 中其它組件

Tomcat 還有其它重要的組件,如安全組件 security、logger 日志組件、session、mbeans、naming 等其它組件。這些組件共同為 Connector 和 Container 提供必要的服務。

Tomcat Server處理一個HTTP請求的過程:Tomcat系統架構是怎樣的

1、用戶點擊網頁內容,請求被發送到本機端口8080,被在那里監聽的Coyote HTTP/1.1 Connector獲得。

2、Connector把該請求交給它所在的Service的Engine來處理,并等待Engine的回應。

3、Engine獲得請求localhost/test/index.jsp,匹配所有的虛擬主機Host。

4、Engine匹配到名為localhost的Host(即使匹配不到也把請求交給該Host處理,因為該Host被定義為該Engine的默認主機),名為localhost的Host獲得請求/test/index.jsp,匹配它所擁有的所有的Context。Host匹配到路徑為/test的Context(如果匹配不到就把該請求交給路徑名為“ ”的Context去處理)。

5、path=“/test”的Context獲得請求/index.jsp,在它的mapping table中尋找出對應的Servlet。Context匹配到URL PATTERN為*.jsp的Servlet,對應于JspServlet類。

6、構造HttpServletRequest對象和HttpServletResponse對象,作為參數調用JspServlet的doGet()或doPost().執行業務邏輯、數據存儲等程序。

7、Context把執行完之后的HttpServletResponse對象返回給Host。

8、Host把HttpServletResponse對象返回給Engine。

9、Engine把HttpServletResponse對象返回Connector。

10、Connector把HttpServletResponse對象返回給客戶Browser。

到此,關于“Tomcat系統架構是怎樣的”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

玉环县| 嘉义县| 新源县| 濉溪县| 平阳县| 舒城县| 鲜城| 吴忠市| 广东省| 巩义市| 汽车| 伊金霍洛旗| 武安市| 屏山县| 微博| 正阳县| 丹棱县| 涿州市| 洞头县| 潼南县| 甘德县| 承德县| 绥棱县| 定远县| 铅山县| 佳木斯市| 浠水县| 南召县| 安阳县| 江阴市| 沽源县| 恭城| 仪陇县| 西峡县| 门源| 克拉玛依市| 正镶白旗| 绥化市| 西畴县| 咸丰县| 甘德县|