Tomcat是基于組件的服務器,它的構成組件都是可配置的,Tomcat各組件是在
1.server組件
監(jiān)聽8005端口,接收關閉Tomcat的SHUTDOWN命令。一個Server實例就是一個JVM。
2.service組件
用于關聯連接器(Connector)和引擎(Engine);一個service里面包含一個引擎和一個或多個連接器。
3.Connector組件
每個連接器有一個特定的端口和協議,它接收入站請求交給引擎處理,也將引擎處理結果交給客戶。連接器類型有:
Http Connector:基于HTTP協議,負責建立HTTP連接。它又分為BIO Http Connector與NIO Http Connector兩種,后者提供非阻塞IO與長連接Comet支持。 AJP Connector:基于AJP協議,AJP是專門設計用于Tomcat與HTTP服務器通信定制的協議,能提供較高的通信速度和效率。如與Apache服務器集成時,采用這個協議。 APR HTTP Connector:用C實現,通過JNI調用的。主要提升對靜態(tài)資源(如HTML、圖片、CSS、JS等)的訪問性能?,F在這個庫已獨立出來可用在任何項目中。由于APR性能較前兩類有很大提升,所以目前是Tomcat的默認Connector。4.Engine組件
defaultHost:Tomcat支持基于FQDN的虛擬主機,這些虛擬主機可以通過在Engine容器中定義多個不同的Host組件來實現;但如果此引擎的連接器收到一個發(fā)往非非明確定義虛擬主機的請求時則需要將此請求發(fā)往一個默認的虛擬主機進行處理,因此,在Engine中定義的多個虛擬主機的主機名稱中至少要有一個跟defaultHost定義的主機名稱同名;
name:Engine組件的名稱,用于日志和錯誤信息記錄時區(qū)別不同的引擎;
Engine容器中可以包含Realm、Host、Listener和Valve子容器。
5.host組件
位于Engine容器中用于接收請求并進行相應處理的主機或虛擬主機。
6.Context組件
一個Context定義用于標識tomcat實例中的一個Web應用程序。
7.Realm組件
一個Realm表示一個安全上下文,它是一個授權訪問某個給定Context的用戶列表和某用戶所允許切換的角色相關定義的列表。因此,Realm就像是一個用戶和組相關的數據庫。定義Realm時惟一必須要提供的屬性是classname,它是Realm的多個不同實現,用于表示此Realm認證的用戶及角色等認證信息的存放位置。
8.Value組件
Valve類似于過濾器,它可以工作于Engine和Host/Context之間、Host和Context之間以及Context和Web應用程序的某資源之間。一個容器內可以建立多個Valve,而且Valve定義的次序也決定了它們生效的次序。