Tomcat链接器Connector的设计概述

目录

1、Connector的设计

2、从Tomcat应用服务器的设计视角看Connector


1、Connector的设计

想要与Container配合实现完整的服务器功能,Connector需要实现如下功能:

  • 监听服务器端口,读取来自客户端的请求。(AbstractEndpoint)
  • 将请求数据按照指定协议进行解析。(ProtocolHandler)
  • 根据请求地址匹配正确的容器进行处理。(Processor处理  Mapper映射匹配)
  • 将响应返回客户端。

 Tomcat链接器Connector的设计概述_第1张图片

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链接器Connector的设计概述_第2张图片

 

如上图所示,Tomcat通过适配器模式(Adapter)实现了Connector与Mapper、Container的解耦。Tomcat默认的Connector实现(Coyote)对应的适配器为CoyoteAdapter。也就是说,如果你希望使用Tomcat的链接器方案,又想脱离Servlet容器,你只需要实现自己的Adapter即可。当然,你还需要按照Container的定义开发你自己的容器实现(这个实现不一定要遵从Servlet规范)。

 

你可能感兴趣的:(Java相关,#,Tomcat,tomcat,java)