天天看點

tomcat伺服器體系結構

tomcat伺服器體系結構

IT那個小筆記

  1. 體系結構
  2. Server
  3. Service
  4. Connector
  5. Engine
  6. Host
  7. Context

server.xml是Tomcat中最重要的配置檔案,server.xml的每一個元素都對應了Tomcat中的一個元件,通過對xml檔案中元素的配置,可以實作對Tomcat中各個元件的控制。

tomcat伺服器體系結構

   1.Server:整個Servlet容器組合,可以包含一個或多個<Service>

   2.service:它由一個或者多個Connector組成,以及一個Engine,負責處理所有Connector所獲得的客戶請求。

   3.Connector:用戶端與程式互動元件,負責接收請求以及向用戶端傳回響應。

   4.Engine:處理連接配接器接收到請求

   5.Host:虛拟主機

   6. Context一個Context對應一個Web Application

tomcat伺服器體系結構

Server元素在最頂層,代表整個Tomcat容器,是以它必須是server.xml中唯一一個最外層的元素。一個Server元素中可以有一個或多個Service元素。

在上圖中,在最外層有一個<Server>元素,shutdown屬性表示關閉Server的指令

Server的主要任務,就是提供一個接口讓用戶端能夠通路到這個Service集合,同時維護它所包含的所有的Service的聲明周期,包括如何初始化、如何結束服務、如何找到用戶端要通路的Service。

Service的作用,是在Connector和Engine外面包了一層,把它們組裝在一起,對外提供服務。一個Service可以包含多個Connector,但是隻能包含一個Engine;其中Connector的作用是從用戶端接收請求,Engine的作用是處理接收進來的請求。

在上圖中,Server中包含一個名稱為“Catalina”的Service。實際上,Tomcat可以提供多個Service,不同的Service監聽不同的端口,用戶端通路哪個端口就到哪個Service

Connector的主要功能,是接收連接配接請求,建立Request和Response對象用于和請求端交換資料;然後配置設定線程讓Engine來處理這個請求,并把産生的Request和Response對象傳給Engine。Service的端口就是由它來監聽

tomcat伺服器體系結構

當客服端通路到8080端口就可以連接配接這個服務,下面的8009是對伺服器。還有一些其他屬性:連接配接逾時的時間、要求的協定、重定向端口号

Engine元件在Service元件中有且隻有一個;Engine是Service元件中的請求處理元件。Engine元件從一個或多個Connector中接收請求并處理,并将完成的響應傳回給Connector,最終傳遞給用戶端。

前面已經提到過,Engine、Host和Context都是容器,但它們不是平行的關系,而是父子關系:Engine包含Host,Host包含Context。

tomcat伺服器體系結構

其中,name屬性用于日志和錯誤資訊,在整個Server中應該唯一。defaultHost屬性指定了預設的host名稱,當發往本機的請求指定的host名稱不存在時,一律使用defaultHost指定的host進行處理;是以,defaultHost的值,必須與Engine中的一個Host元件的name屬性值比對。

也就是說當發送請求的主機名找不到一個Host主機名與之比對,就會換成defaultHost配置的主機名再去找,一個Engine中一定得有一個Host的主機名是Engine的屬性defaultHost相比對的

Host的作用

Host虛拟主機的作用,是運作多個Web應用(一個Context代表一個Web應用),并負責安裝、展開、啟動和結束每個Web應用。

Host元件代表的虛拟主機,對應了伺服器中一個網絡名實體(如”www.test.com”,或IP位址”),一個主機可以有多個虛拟主機來對應,通過不同的主機名通路同一台電腦伺服器的不同應用

用戶端通常使用主機名來辨別它們希望連接配接的伺服器;該主機名也會包含在HTTP請求頭中。Tomcat從HTTP頭中提取出主機名,尋找名稱比對的主機。如果沒有比對,請求将發送至預設主機。是以預設主機不需要是在DNS伺服器中注冊的網絡名,因為任何與所有Host名稱不比對的請求,都會路由至預設主機。

Host的配置

tomcat伺服器體系結構

name

  • 屬性指定虛拟主機的主機名,一個Engine中有且僅有一個Host元件的name屬性與Engine元件的defaultHost屬性相比對;一般情況下,主機名需要是在DNS伺服器中注冊的網絡名,但是Engine指定的defaultHost不需要,原因在前面已經說明。

unpackWARs

  • 指定了是否将代表Web應用的WAR檔案解壓;如果為true,通過解壓後的檔案結構運作該Web應用,如果為false,直接使用WAR檔案運作Web應用。

Host的autoDeploy和appBase屬性,與Host内Web應用的自動部署有關

tomcat伺服器體系結構

一個Context就表示一個應用

docBase屬性:此web應用的檔案路徑,相對于所屬Host的位址。也可以用絕對路徑不放在Host指定的應用目錄下

path:URL入口,請求找到哪一個web應用,一個path對應一個docBase,若把上面的path="/servlet"改為path="/aaaa",要通路路徑是servlet的應用就得輸入主機:端口/aaaa

繼續閱讀