Connector 最底層是使用 Socket 進行連接,Request 和 Response 按照 HTTP 協議進行封裝,之后會將 Request 和 Response 交給 Container 驚醒處理,Container 就是 Servlet 的容器,Container 處理完成后返回給 Connector,最后 Connector 使用 Socket 將處理返回給客戶端
7.5.1 Connector 結構
Connector 具體是用 ProtocolHandler 處理請求,不同的 ProtocolHandler 代表不同的連接類型。Protocol有三個組件:
- Processor:將 Endpoint 接收到的 Socket 封裝成 Request。
- Adapter:將封裝好的 Request 交給 Container 進行處理。
- Endpoint:處理底層 Socket 的網絡連接
- Acceptor:用于監聽請求。
- AsyncTimeout:異步檢查 request 的超時。
- Handle:處理接收到的 Socket,在內部調用 Processor 進行處理。
Connector 結構圖
7.5.2 Connector 自身類
Connector 類主要是在其被創建時創建 ProtocolHandler,在生命周期中調用 ProtocolHandler 對應的方法。
Connector 的創建
Connector 的創建過程主要是初始化 ProtocolHandler。server.xml配置文件中的 protocol 屬性會設置到 Connector 構造函數的參數中,用于指定 ProtocolHandler 的類型。
Connector
Connector 生命周期處理方法
Connector 的生命周期主要調用了 ProtocolHandler 的相應的方法。
ProtocolHandler
7.5.4 處理 TCP/IP 協議的 Endpoint
7.5.5 處理 HTTP 協議的 Processor
7.5.6 適配器 Adapter
- Processor 在其 process 方法中調用 Adapter 的 service方法來處理請求。
- Adapter 在service 中調用 Container 管道中的 invoke 方法來處理請求。