Tomcat鏈接器Connector的設計概述

目錄

1、Connector的設計

2、從Tomcat應用服務器的設計視角看Connector


1、Connector的設計

想要與Container配合實現完整的服務器功能,Connector需要實現如下功能:

  • 監聽服務器端口,讀取來自客戶端的請求。(AbstractEndpoint)
  • 將請求數據按照指定協議進行解析。(ProtocolHandler)
  • 根據請求地址匹配正確的容器進行處理。(Processor處理  Mapper映射匹配)
  • 將響應返回客戶端。

 

ProtocolHandler:表示一個協議處理器,針對不同協議和I/O方式,提供不同的實現

AbstractEndpoint:由ProtocolHandler所包含的,用於啓動Socket監聽,這個抽象類按照I/O方式進行分類。如,Nio2Endpoint標識非阻塞式Socket I/O。

Processor:按照指定協議讀取數據,並將請求交給容器處理。如Http11NioProcessor標識在NIO方式下HTTP請求的處理類。

Processor需要處理2件事情:

1、按照請求地址映射到具體容器。由Mapper類實現

2、監聽容器的註冊和銷燬。由MapperListener類實現

注:Tomcat7之前,Mapper由Connector維護,Tomcat8之後,Mapper由Service維護。

 

2、從Tomcat應用服務器的設計視角看Connector

 

如上圖所示,Tomcat通過適配器模式(Adapter)實現了Connector與Mapper、Container的解耦。Tomcat默認的Connector實現(Coyote)對應的適配器爲CoyoteAdapter。也就是說,如果你希望使用Tomcat的鏈接器方案,又想脫離Servlet容器,你只需要實現自己的Adapter即可。當然,你還需要按照Container的定義開發你自己的容器實現(這個實現不一定要遵從Servlet規範)。

 

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