摘要:默認情況下,不同的組件會自己創建線程池來使用。目前支持兩種,支持協議與協議的,組件的不同體現在其協議及模式的不同。組件維護會話的生成更新銷毀。是中最小級別的容器。超過會阻塞等待,直到有可用對象為止。
Tomcat整體結構及組件如下圖所示
Server
a.提供監聽機制,用于在Tomcat整個生命周期中對不同事件進行處理。
b.提供Tomcat容器全局的命名資源實現
Tomcat的運行實例的抽象,包含若干個Listener組件、GlobalNamingResource組件及若干個Service組件。
Service
Service組件由若干個Connector組件和Executor組件組合而成。
Connector組件負責監聽某端口的客戶端請求,不同端口對應不同的Connector。
Executor組件在Service抽象層提供了線程池,讓Service下的組件可以共用線程池。
默認情況下,不同的Connector組件會自己創建線程池來使用。其他組件也可以共享Service線程池。
Connector
Connector是Tomcat最核心的兩個組件之一,主要負責接收客戶端連接和客戶端請求的處理加工。
每個Connector都指定一個端口進行監聽,分別對請求報文解析和對響應報文組裝,解析生成Request對象,組裝生成Response對象,可以有多個Connector。
Protocol組件:是協議的抽象,將不同的協議進行了封裝,如:HTTP協議和AJP協議。
EndPoint組件:是接收端的抽象,BIO模式有JioEndpoint,NIO模式有NioEndpoint和本地I/O模式的AprEndpoint。
Acceptor組件:用于接收客戶端連接的接收器。
Executor組件:Connector自己的私有線程池。
Processor組件:處理客戶端請求的處理器,不同的協議和不同的I/O模式有不同的處理方式。
Mapper組件:路由器,對客戶端請求URL的映射,通過它可以將不同的請求轉發到對應的Host組件、Context組件、Wrapper組件進行處理并響應給客戶端。即將請求發送到某虛擬主機上的某個web應用的某個servlet。
CoyoteAdapter組件:適配器,將Connector組件和Engine容器適配連接起來。把接收到的客戶端的請求報文解析成請求對象和響應對象傳遞到Engine容器,交由容器處理。
目前Tomcat支持兩種Connector,支持HTTP協議與AJP協議的Connector,Connector組件的不同體現在其協議及I/O模式的不同。HTTP Connector所支持的協議版本為HTTP/1.1和HTTP/1.0。每個Connector實例對應一個端口,在同一個Service中可以設置若干個Connector實例,端口必須不同,協議可以相同。如Http11Protocol(BIO模式)、Http11NioProtocol(NIO模式)。
Engine
全局引擎容器,標準實現是StandardEngine。
Host組件:是Engine容器的子容器,表示一個虛擬主機,不同的域名被抽象成一個Host。
AccessLog組件:負責記錄客戶端請求訪問日志,Engine容器是一個全局的Servlet容器,記錄的日志為所有客戶端的請求,無論訪問哪個虛擬主機。
Pipeline組件:Pipeline屬于一種設計模式,將不同級別的容器串聯起來的通道,請求進來的時候就可以通過管道進行流轉處理。
Cluster組件:有Engine和Host兩個級別的集群
Realm組件:存儲了用戶、密碼及權限等數據,主要是配合Tomcat實現資源認證模塊
Host
表示虛擬主機,一個Engine可以包含若干個Host容器,一個Host容器可以包含若干個Context容器。
Context
Context容器包含若干個Wrapper組件、Realm組件、AccessLog組件、Manager組件等。
Manager組件:維護會話的生成、更新、銷毀。每個Context都有自己的會話管理器。
Wrapper是Tomcat中最小級別的容器。其他組件不再贅述。
Wrapper
包含servlet和servlet對象池
servlet對象池是為了支持一個Servlet對象對應一個線程的SingleThreadModel接口而使用的策略,Wrapper會有一個Servlet堆,負責保存若干個Servlet對象,當需要Servlet對象時從堆中pop出一個對象,當用完之后push回堆中。Wrapper容器中最多可以有20個某servlet類對象。超過會阻塞等待,直到有可用對象為止。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/68889.html
摘要:指標虛擬內存已使用的大小,如果大于,表示你的機器物理內存不足了每秒從磁盤讀入虛擬內存的大小,如果這個值大于,表示物理內存不夠用或者內存泄露了,要查找耗內存進程解決掉。每秒虛擬內存寫入磁盤的大小,如果這個值大于,同上,單位為。 原理剖析(第 013 篇)應用系統性能調優 - 一、大致介紹 1. 本人接手的一個打車系統,因為出現了一次響應十分緩慢的情況,因此才有了應用調優的篇章; 2、由于...
摘要:實戰高并發程序設計推薦豆瓣評分書的質量沒的說,推薦大家好好看一下。推薦,豆瓣評分,人評價本書介紹了在編程中條極具實用價值的經驗規則,這些經驗規則涵蓋了大多數開發人員每天所面臨的問題的解決方案。 很早就想把JavaGuide的書單更新一下了,昨晚加今天早上花了幾個時間對之前的書單進行了分類和補充完善。雖是終極版,但一定還有很多不錯的 Java 書籍我沒有添加進去,會繼續完善下去。希望這篇...
摘要:相關推薦,豆瓣評分,人評價本書介紹了在編程中條極具實用價值的經驗規則,這些經驗規則涵蓋了大多數開發人員每天所面臨的問題的解決方案。實戰高并發程序設計推薦豆瓣評分,書的質量沒的說,推薦大家好好看一下。 該文已加入開源文檔:JavaGuide(一份涵蓋大部分Java程序員所需要掌握的核心知識)。地址:https://github.com/Snailclimb... 【強烈推薦!非廣告!】...
閱讀 2287·2021-11-10 11:35
閱讀 899·2021-09-26 09:55
閱讀 2388·2021-09-22 15:22
閱讀 2318·2021-09-22 15:17
閱讀 3683·2021-09-09 09:33
閱讀 1821·2019-08-30 11:22
閱讀 970·2019-08-30 10:57
閱讀 641·2019-08-29 16:10