tomcat基礎

Tomcat的體系結構

Tomcat服務器是由一系列可配置的組件構成的,其中核心組件是Catalina Servlet容器,它是所有其他Tomcat組件的頂層容器。Tomcat各組件之間的層次關係如圖1-20所示。


圖1-20  Tomcat組件之間的層次結構



我們下面簡單介紹一下各組件在Tomcat服務器中的作用。

(1)Server

Server表示整個的Catalina Servlet容器。Tomcat提供了Server接口的一個默認實現,這通常不需要用戶自己去實現。在Server容器中,可以包含一個或多個Service組件。

(2)Service

Service是存活在Server內部的中間組件,它將一個或多個連接器(Connector)組件綁定到一個單獨的引擎(Engine)上。在Server中,可以包含一個或多個Service組件。Service也很少由用戶定製,Tomcat提供了Service接口的默認實現,而這種實現既簡單又能滿足應用。

(3)Connector

連接器(Connector)處理與客戶端的通信,它負責接收客戶請求,以及向客戶返回響應結果。在Tomcat中,有多個連接器可以使用。

(4)Engine

在Tomcat中,每個Service只能包含一個Servlet引擎(Engine)。引擎表示一個特定的Service的請求處理流水線。作爲一個Service可以有多個連接器,引擎從連接器接收和處理所有的請求,將響應返回給適合的連接器,通過連接器傳輸給用戶。用戶允許通過實現Engine接口提供自定義的引擎,但通常不需要這麼做。

(5)Host

Host表示一個虛擬主機,一個引擎可以包含多個Host。用戶通常不需要創建自定義的Host,因爲Tomcat給出的Host接口的實現(類StandardHost)提供了重要的附加功能。

(6)Context

一個Context表示了一個Web應用程序,運行在特定的虛擬主機中。什麼是Web應用程序呢?在Sun公司發佈的Java Servlet規範中,對Web應用程序做出瞭如下的定義:“一個Web應用程序是由一組Servlet、HTML頁面、類,以及其他的資源組成的運行在Web服務器上的完整的應用程序。它可以在多個供應商提供的實現了Servlet規範的Web容器中運行”。一個Host可以包含多個Context(代表Web應用程序),每一個Context都有一個唯一的路徑。用戶通常不需要創建自定義的Context,因爲Tomcat給出的Context接口的實現(類StandardContext)提供了重要的附加功能。
下面我們通過圖1-21來幫助讀者更好地理解Tomcat服務器中各組件的工作流程。

要了解這些組件的其他信息,可以看下面的頁面:

 %CATALINA_HOME%\webapps\docs\architecture\overview.html
我們可以在conf目錄下的server.xml文件中對這些組件進行配置,讀者打開server.xml文件,就可以看到元素名和元素之間的嵌套關係,與Tomcat服務器的組件是一一對應的,server.xml文件的根元素就是<Server>。關於server.xml配置文件中的各元素及其屬性的含義,請參看附錄C。


(點擊查看大圖)圖1-21  Tomcat各組件的工作流程


在Tomcat中,提供了各組件的接口及其實現類,如果你要替換Tomcat中的某個組件,只需要根據該組件的接口或類的說明,重寫該組件,並進行配置即可。圖1-22是Tomcat各組件的類圖。

(點擊查看大圖)圖1-22  Tomcat的組件類圖


在類圖的接口名或類名下面是該接口或該類所在的包,這些接口和類都在%CATALINA_HOME%\lib\catalina.jar文件中。對Tomcat服務器的實現感興趣的讀者,可以從http://tomcat.apache.org/download-60.cgi上下載Tomcat的源代碼。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章