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 进行处理。
7.5.2 Connector 自身类
Connector 类主要是在其被创建时创建 ProtocolHandler,在生命周期中调用 ProtocolHandler 对应的方法。
Connector 的创建
Connector 的创建过程主要是初始化 ProtocolHandler。server.xml配置文件中的 protocol 属性会设置到 Connector 构造函数的参数中,用于指定 ProtocolHandler 的类型。
Connector 生命周期处理方法
Connector 的生命周期主要调用了 ProtocolHandler 的相应的方法。
7.5.4 处理 TCP/IP 协议的 Endpoint
7.5.5 处理 HTTP 协议的 Processor
7.5.6 适配器 Adapter
- Processor 在其 process 方法中调用 Adapter 的 service方法来处理请求。
- Adapter 在service 中调用 Container 管道中的 invoke 方法来处理请求。