架构图

核心功能
Tomcat是Apache开源的轻量级Java ServletServlet容器,其中一个Server(Tomcat实例)可以管理多个Service(服务),一个Service包含多个Connector和一个Engine,负责管理请求到应用的整个流程。
Tomcat要实现的两个核心功能:
- 处理Socket连接,负责网络字节流与Request、Response请求的封装与拆解
- 加载和管理Servlet,处理具体的Request请求
因此Tomcat设计了两个核心组件------连接器(Connector)和容器(Container),连接器负责接受、返回请求,容器负责内部处理。
组件
Server
Tomcat实例,可以管理多个Service(服务)
Service
一个Service包含多个Connector和一个Engine,负责管理请求到应用的整个流程
Connector
在一个Service中,多个Connector负责不同协议的请求(Http,Https等)
Coyote是Tomcat连接器框架,封装了底层的网络通信(Socket请求及响应处理),为Catalina容器提供了统一接口,使Catalina容器 与具体的请求协议及IO操作 完全解耦。
Engine
Tomcat核心处理模块,处理来自Connector的请求,并传递到合适的Host和Context
Host
表示一个虚拟主机,可以在同一个 Tomcat 实例中配置多个虚拟主机。
Context
表示一个 Web 应用程序,是最小的 Web 应用处理单元。
Wrapper
表示一个Servlet,Wrapper 作为容器中的最底层,不能包含子容器。
Tomcat请求流程
客户端请求
|
V
Coyote (连接器)
|-- 监听端口 (Endpoint)
|-- 解析协议 (ProtocolHandler)
|-- 转化为 Request 和 Response 对象
V
Catalina (Servlet 容器)
|-- 转换为 HttpServletRequest 和 HttpServletResponse
|-- 找到目标 Servlet (通过 Engine -> Host -> Context -> Wrapper)
|-- 调用 Servlet 的 service() 方法
V
返回响应
|-- 生成响应数据
|-- 通过 Coyote 的 Processor 写入输出流
V
客户端接收响应
http://localhost:8080/app1
| | | |
| | | └── Context(路径)
| | └── Port(端口)
| └── Host(主机)
└── Connector(协议)