Tomcat架構簡述


Tomcat架構簡述

概述

Tomcat是一個web應用服務器,也可以稱作是jsp/servlet容器,Tomcat不僅可以相應web應用而且自身集成了http服務,是一個高效的web服務器。
Tomcat雖然本身的結構很復雜,但是同時Tomcat也高度的模塊化,所以從結構圖上來看Tomcat的設計非常的簡潔。

由上圖可以看出來一個應用服務器(Tomcat server)可以擁有多個service服務,一個service服務中有多個Connector組件和一個Container組件以及多個其他組件,例如日志,Session,命名等,其中Connector和Container這兩個組件是Tomcat的核心組件,下面將大致一一介紹每個組件的作用。

Server服務器

server服務器指Tomcat容器。

Service服務

service服務指的就是Server服務器能提供的服務,比如http服務,在Tomcat里就是指web服務。

Jasper

Jasper組件負責jsp頁面的解析,jsp屬性的驗證,同時也負責將jsp頁面動態轉換為java代碼並且編譯成class文件。

Naming

Naming組件負責管理相關資源,包括數據庫連接池,EJB,mail等通過JNDI獲取的內容。

Logging

Logging組件負責記錄相關日志,包含訪問錯誤信息等。

Session

Session組件負責session的管理,序列化反序列化等。

需要重點介紹的是Connector組件和Container組件

可以參照一張更全面的圖

Connector

由上面的圖我們可以看出來一個Service服務可以包含多個Connector,實際上Tomcat中包含了3個Connector,分別對應HTTP請求,HTTPS請求以及AJP請求。那么Connector在Tomcat中到底扮演了什么樣的角色呢?Tomcat中的Connector負責的任務就是接受請求,創建request和response,解析請求中數據,將數據封裝到request中,最后將request和response作為參數傳遞給Container對象!

由於不同協議規則不同,解析起來也是不一樣的,所以需要多個Connector。

Container

Container實際上只是容器的概稱。而Tomcat中包含有多個Container。那么Container的作用是什么呢?Container的作用就是接收Connector傳遞的request和response,對request和response進行了一些過濾封裝,同時調用對應的Servlet去處理該request,最后將處理完成后的結果封裝到response中返回給客戶端!

每個Container從大到小分別為Engine-->Host-->Context-->Wrapper

  1. Engine容器代表整個Catalina servlet引擎

  2. Host容器表示一個虛擬主機,Tomcat自帶的是一個叫localhost的主機

  3. Context容器表示一個WEB應用程序

  4. Wrapper表示一個獨立的Servlet

對於一個Engine可以包含多個Host,Tomcat自帶了一個叫做localhost的Host容器,一個Host容器可以包含多個Context,一個Context可以包含多個Wrapper。

是不是感覺這幾個單詞很熟悉,是的!在Tomcat中我們可以使用Tomcat默認提供的這些容器,也可以在CATALINA_HOME/conf下的server.xml中配置,而這幾個單詞正是對應server.xml中的各個配置選項的名稱!

在下面的幾個章節我們將逐漸深入到各個組件中去探索Tomcat是如何工作的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM