成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

詳解Tomcat內部實現架構解析

開發 架構 服務器
Connector用于接收請求并將請求封裝成Request和Response,然后交給Container處理,處理之后在交給Connector返回給客戶端。

 

[[326737]]

Tomcat頂層架構

 

詳解Tomcat內部實現架構解析

 

可以看到一個Server可以有多個Service,一個Service可以有多個Connector和一個Container,這兩部分是tomcat的核心。

1,Connector用于處理連接相關額事情,并提供Socket與Reponse相關的轉化

2,Container用于封裝和管理Servlet,以及具體處理Request請求

多個Connector可以提供多個鏈接,例如同時提供http和https鏈接,亦可以提供相同協議不同端口的鏈接,示意如圖:

 

詳解Tomcat內部實現架構解析

 

多個Connector和一個Container就形成了一個Service,但是還需要一個環境來管理整個多個Service(但是一般也就只有一個Service,就是常見得Catalina),這個就必須是Server了,具體可以看

server.xml文件配置:

 

詳解Tomcat內部實現架構解析

 

上面的配置用這張圖更加清楚的理解:

 

詳解Tomcat內部實現架構解析

 

下面來解析一下這個配置文件:

可以看到Server標簽port設置為8005,shutdown="SHUTDOWN",表示8005端口監聽到SHUTDOWN命令就關閉Tomcat服務。

Resource內配置 pathname="conf/tomcat-users.xml" 指定manageUI登錄的用戶以及其他的全局配置。

這個Server里只有一個Service名為Catalina,Catalina支持兩個連接,分別是端口為8080的http連接和端口為8009的AJP連接,

Catalina這個服務里有一個站點名字叫localhoust,站點下的應用群為appBase="webapps",支持自動部署autoDeploy="true",

并設置了站點內應用打印的日志名稱及日志格式。

Connector和Container架構分析

Connector用于接收請求并將請求封裝成Request和Response,然后交給Container處理,處理之后在交給Connector返回給客戶端。

可以分為四步:

  • 1,Connector如何接受請求的?
  • 2,如何將接受的請求封裝成Request和Response的?
  • 3,封裝完成后的Request和Reponse是如何交給Container的?
  • 4,Container處理完成后如何交給Connector并返回給客戶端的?

Connector結構圖:

 

詳解Tomcat內部實現架構解析

 

Connector使用ProtocoHandler處理請求,不同的ProtocoHandler代表不同的類型,比如:Http11Protocol使用普通的Socke

t來連接,Http11NioProtocol使用NioSocket連接。

三個組件Endpoint用來處理底層Socket連接,Process用來將EndPoint接受到的Socket封裝成Request,Adapetr將Request

交給Container進行具體的處理。

EndPoint底層處理Socket網絡連接,所以EndPoint是用來實現TCP/IP協議的,而Processor是用來實現HTTP協議的,

Adapetr將請求是配到Servlet容器進行具體處理。AsyncTimeout用來監聽請求是否超時。

現在1,2,3前三步已經處理完了就剩最后一步Container如何處理請求了

Container結構圖:

 

詳解Tomcat內部實現架構解析

 

四個子容器分別是:

1,Engine:引擎管理多個站點(Host),一個Service一個Engine

2,Host:代表一個站點,在server.xml配置Host可添加站點

3,Context:代表一個應該用程序,就是我們平時開發的程序,或一個WEB-INF目錄及web.xml文件

4,Wrapper:每個Wrapper封裝這一個Servlet

以上幾個容器和Tomcat目錄對應如下:

 

詳解Tomcat內部實現架構解析

 

Context和Host的區別就是Context代表一個應用,我們的Tomcat默認webapps下的每一個文件夾都是一個Context,其中Root下放著主應用,

其他的目錄都存放著子應用。而整個webapps就是一個Host站點。

訪問應用時如果放在了Root下可以直接Host的name屬性加Connector的端口就行,如果是自己建的就加上Context名稱就行了。

Container如何處理請求的?

使用了Pipeline-Valve管道來處理,其中用到了責任鏈模式,每一個處理者負責做自己的處理,處理完后將處理結果返回,

再交給下個處理者繼續處理,如圖:

 

詳解Tomcat內部實現架構解析

 

(1)Connector在接收到請求后會首先調用最頂層容器的Pipeline來處理,這里的最頂層容器的Pipeline就是EnginePipeline(Engine的管道);

(2)在Engine的管道中依次會執行EngineValve1、EngineValve2等等,最后會執行StandardEngineValve,在StandardEngineValve中會調用Host管道,然后再依次執行Host的HostValve1、HostValve2等,最后在執行StandardHostValve,然后再依次調用Context的管道和Wrapper的管道,最后執行到StandardWrapperValve。

(3)當執行到StandardWrapperValve的時候,會在StandardWrapperValve中創建FilterChain,并調用其doFilter方法來處理請求,這個FilterChain包含著我們配置的與請求相匹配的Filter和Servlet,其doFilter方法會依次調用所有的Filter的doFilter方法和Servlet的service方法,這樣請求就得到了處理!

(4)當所有的Pipeline-Valve都執行完之后,并且處理完了具體的請求,這個時候就可以將返回的結果交給Connector了,Connector在通過Socket的方式將結果返回給客戶端。

 

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2020-05-12 23:20:50

Tomcat內部結構

2024-08-26 10:31:23

2023-12-13 08:31:23

2017-02-24 17:24:16

Etcd架構分布式系統

2017-09-05 10:20:30

PyTorchTensorPython

2022-07-19 20:04:31

NAPI模塊鴻蒙

2019-12-06 11:18:07

LinuxCPU架構

2009-07-15 14:08:06

MyEclipse T

2023-05-09 13:38:28

2009-03-24 12:48:56

Nehalem服務器Intel

2017-12-13 15:33:02

LinuxNginxTomcat

2015-06-29 09:51:45

支付寶

2010-07-19 14:13:41

Perl函數

2009-03-03 09:13:36

工作流BPM業務流程

2023-09-18 23:37:50

Kubernetes架構

2011-02-25 11:16:38

ApacheTomcat

2018-12-25 10:36:41

TomcatServer文件

2020-10-07 14:20:41

Tomcat深入解析

2018-11-09 10:09:38

RAC硬件軟件

2018-10-08 09:05:52

TomcatServer配置
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产午夜久久久 | 国产传媒在线观看 | 国产一区久久 | 欧美精品一区二区三区在线 | 久久久av一区 | 国产十日韩十欧美 | 日韩专区中文字幕 | 国产精品完整版 | 国产成人免费视频网站高清观看视频 | 久久亚洲一区二区 | 久久亚洲一区 | 精品国产1区2区3区 在线国产视频 | 精品久久九 | 91麻豆精品国产91久久久更新资源速度超快 | 狠狠骚 | 欧美激情久久久 | 久色视频在线观看 | 国产精品国产自产拍高清 | 日韩视频成人 | 精品少妇一区二区三区在线播放 | 一区二区国产精品 | 午夜国产羞羞视频免费网站 | 天天爽天天操 | 天天艹天天干天天 | 久久久91精品国产一区二区三区 | 成人午夜影院 | 涩涩视频网站在线观看 | 精品香蕉一区二区三区 | av大全在线 | 日本中文字幕在线视频 | 国产这里只有精品 | 成人免费看电影 | 国产精品久久久久久久久久免费 | 国产欧美一区二区三区日本久久久 | 成人一区二区三区视频 | 中文字幕免费视频 | 深夜爽视频 | 亚洲欧美激情视频 | 精品三区| 毛片a级毛片免费播放100 | 中文字幕 国产精品 |