Tomcat 之 Connector 连接器深度解析
在 Tomcat 架构中,Connector(连接器) 是负责与客户端通信的核心组件,它封装了底层网络通信细节,为上层容器(Catalina)提供统一的请求入口。本文将详细解析 Connector 的功能、结构及工作原理。
Connector 概述
Connector 是 Tomcat 对外提供服务的接口,基于 Coyote 框架实现,主要功能包括:
- 网络通信:监听端口,接收客户端连接(如 HTTP 请求)。
- 协议解析:根据 HTTP、AJP 等协议解析请求数据。
- 数据转换:将字节流转换为 Tomcat 内部的
Request对象,再转换为标准的ServletRequest供容器处理;处理完成后将响应反向转换为字节流返回客户端。
核心目标:使 Catalina 容器与具体的协议和 I/O 模型解耦,提高灵活性和可扩展性。
支持的协议与 I/O 模型
1. 传输协议
Connector 支持三种主要协议:
| 协议 | 用途 |
|---|---|
| HTTP/1.1 | 最常用协议,用于 Tomcat 独立运行时处理 HTTP 请求。 |
| AJP/1.3 | 用于与 Web 服务器(如 Apache、Nginx)集成,优化静态资源处理和集群部署。 |
| HTTP/2.0 | 新一代 HTTP 协议(Tomcat 8.5+ 支持),支持多路复用、服务器推送等特性。 |
2. I/O 模型
Tomcat 8.5 后移除了对 BIO(阻塞 I/O)的支持,保留以下三种 I/O 模型:
| I/O 模型 | 实现方式 | 特点 |
|---|---|---|
| NIO | 基于 Java NIO 类库 | 非阻塞 I/O,通过 Selector 实现多路复用,性能优于 BIO。 |
| NIO2 | 基于 JDK 7 的 NIO2(AIO) | 异步非阻塞 I/O,由操作系统完成 I/O 操作后通知应用程序。 |
| APR | 基于 Apache 可移植运行时库(C 实现) | 操作系统级别的异步 I/O,性能最优,但需单独安装 APR 库。 |
Connector 配置示例
Connector 的配置通常在 conf/server.xml 中,以下是一个 HTTP/1.1 协议的 NIO 连接器配置:


