Tomcat详解

架构图

核心功能

Tomcat是Apache开源的轻量级Java Servlet容器,其中一个Server(Tomcat实例)可以管理多个Service(服务),一个Service包含多个Connector和一个Engine,负责管理请求到应用的整个流程。

Tomcat要实现的两个核心功能:

  1. 处理Socket连接,负责网络字节流与Request、Response请求的封装与拆解
  2. 加载和管理Servlet,处理具体的Request请求

因此Tomcat设计了两个核心组件——连接器(Connector)和容器(Container),连接器负责接受、返回请求,容器负责内部处理。

组件

1. Server

  • Tomcat实例的顶层容器,负责管理整个实例的生命周期,可以管理多个Service(服务)。

2. Service

  • 一个Service包含多个Connector和一个Engine,连接外部请求和内部处理。

3. Connector

  • 在一个Service中,多个Connector负责不同协议的请求(HttpHttps等)
  • Coyote为具体实现:
    • 网络通信:封装了底层的(Socket请求及响应处理)
    • 协议处理:(HTTP 1.1、HTTP 2、HTTPS)
    • Catalina容器提供了统一接口,使Catalina容器与具体的请求协议及IO操作完全解耦

4. Container(容器层级)

  • EngineTomcat核心处理模块,处理来自Connector的请求,并逐级匹配到合适的HostContext
  • Host:表示一个虚拟主机,可以在同一个 Tomcat 实例中配置多个虚拟主机,用于支持多域名。
  • Context:表示一个 Web 应用程序,是最小的 Web 应用处理单元。
  • Wrapper:表示一个 Servlet,负责调用对应 Servlet 的 service()方法
客户端请求
    |
    V
Coyote (连接器)
    |-- 监听端口 (Endpoint)
    |-- 解析协议 (ProtocolHandler)
    |-- 构造内部的 Request 和空的 Response 对象
    |-- 将 Request 和 Response 对象传递给 Catalina 容器
    V
Catalina (Servlet 容器)
    |-- 封装为 HttpServletRequest 和 HttpServletResponse(通过Facade 模式)
    |-- 找到目标 Servlet (通过 Engine -> Host -> Context -> Wrapper)
    |-- 调用 Servlet 的 service() 方法
    |-- 将 Response 数据传递给 Coyote
    V
Coyote (连接器)
    |-- 写入输出流 (Processor):从 Response 对象中读取数据。
    |-- 生成响应字节流:将数据序列化为 HTTP 响应格式。
    |-- 返回数据:通过底层的网络 Socket 将响应发送给客户端。
    V
客户端接收响应
http://localhost:8080/app1
|       |          |    |
|       |          |    └── Context(路径)
|       |          └── Port(端口)
|       └── Host(主机)
└── Connector(协议)
posted @   SlackClimb  阅读(25)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 推荐几款开源且免费的 .NET MAUI 组件库
· 实操Deepseek接入个人知识库
· 易语言 —— 开山篇
· Trae初体验
点击右上角即可分享
微信分享提示