tomcat 是如何處理一個請求的呢

一、Tomcat的整體架構

  • 一個Tomcat只有一個server,server服務器有多個service。
  • service 由多個connector  和一個container 組成。
  • connector  是請求接收器,負責接收請求和把socket轉化爲request及response轉化。

二、connector是如何處理請求的?

  • 不同協議的請求有不同的ProtocolHandler處理,ProtocolHandler由endpoint,processor,Adapter  組成。

  • Endpoint 接收請求,處理底層的socket網絡請求,交由Hander接口處理。

  • Handler 調用Processor將socket請求封裝成request,.

  • 最後由Adapter 適配對應的Servlet容器進行處理請求。

  • AsyncTimeout 處理異步超時的請求。

  • Container 負責具體的請求處理和返回請求結果。

三、Container 架構分析:

  • 架構圖:

  • engine: engine 表示管理器,管理多個站點,一個service只有一個engine。
  • Host: 站點,虛擬主機。可以配置多個。
  • Context: 代表tomcat下運行的一套程序,比如 doc,Root.Root  默認是主應用程序。即訪問時默認的訪問。
  • Wrapper: 封裝Servlet。
  • 那麼container是如何通過這四個容器進行處理請求的呢?
  • 責任鏈模式:Pipeline-Value  管道的責任鏈模式。
  • 每個Pipeline都有一個基礎的Value,而且是在管道的最後一個執行,這個Value叫做BaseValue,BaseValue是不可刪除的;

    在上層容器的管道的BaseValue中會調用下層容器的管道。

  • 那麼請求就是一層層的從上到下進行處理,每層只處理自己處理的事情。

  • 處理完成後就可以返回response給Connector,由Connector返回給客戶端。

參考:https://zhuanlan.zhihu.com/p/35398064

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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