天天看點

Tomcat學習(一) - Tomcat結構以及處理一個請求的過程(轉載忘了出處)

1. Tomcat結構

Tomcat是一個基于元件的伺服器,它的構成元件都是可配置的,其中最外層的元件是Catalina Servlet容器,其他的元件按照一定的格式要求配置在這個頂層容器中。Tomcat的各個元件是在<TOMCAT_HOME>\conf\server.xml檔案中配置的,Tomcat伺服器預設情況下對各種元件都有預設的實作,下面通過分析server.xml檔案來了解Tomcat的各個元件是如何組織的。server.xml檔案的基本組成結構如下。

Tomcat學習(一) - Tomcat結構以及處理一個請求的過程(轉載忘了出處)

XML配置檔案結構

<Server>                     頂層類元素:一個配置檔案中隻能有一個<Server>元素,可包含多個Service。
     <Service>                頂層類元素:本身不是容器,可包含一個Engine,多個Connector。
         <Connector/>         連接配接器類元素:代表通信接口。
            <Engine>   容器類元素:為特定的Service元件處理所有客戶請求,可包含多個Host。
               <Host>    容器類元素:為特定的虛拟主機處理所有客戶請求,可包含多個Context。
                  <Context>   容器類元素:為特定的Web應用處理所有客戶請求。
                  </Context>
                </Host>
               </Engine>
      </Service>
 </Server>      

1)Service

Service元件是一些Connector元件的集合,它本身不是一個容器,是以在這裡不能定義日志等元件。一個Service元件中隻能有一個Engine元件,可以包含多個Connector元件。

2)Connector元件

Connector元件表示一個接口,通過這個接口接收客戶的請求,然戶發送給其他的容器元件,最後再把伺服器的響應結果傳遞給客戶。

3) Engine, Host和context

上面介紹的3個元件本身并不能處理客戶請求,也不能生成響應。在Tomcat中隻有3個元件是可以處理客戶請求并生成響應的,這3個元件分别是 Engine、Host和Context元件。這3個元件分别代表了不同的服務範圍,通過嵌套關系可以知道3個元件的範圍有如下的關系:Engine>Host>Context。

a.Engine元件下可以包含多個Host元件,它為特定的Service元件處理所有客戶請求。

b.一個Host元件代表一個虛拟主機,一個虛拟主機中可以包含多個Web應用(Context元件)。

c.Context元件代表一個Web應用。

Tomcat的各個元件關系,可以用下圖描述。

Tomcat學習(一) - Tomcat結構以及處理一個請求的過程(轉載忘了出處)