当前位置: 首页 > article >正文

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(协议)


http://www.kler.cn/a/470609.html

相关文章:

  • Element-plus表单总结
  • 利用大语言模型解决推理任务
  • 基于RK3568/RK3588大车360度环视影像主动安全行车辅助系统解决方案,支持ADAS/DMS
  • 51单片机——共阴数码管实验
  • Java最新面试题(全网最全、最细、附答案)
  • 【HarmonyOS 5.0】从0到1开发购物应用App(二):登录页对接口
  • 40% 降本:多点 DMALL x StarRocks 的湖仓升级实战
  • 深入理解 Linux 管道:创建与应用详解(匿名管道进程池)
  • 学习随记:word2vec的distance程序源码注释、输入输出文件格式说明
  • Spark服装数据分析系统 大屏数据展示 智能服装推荐系统(协同过滤余弦函数)
  • 【three.js】模型-几何体Geometry,材质Material
  • redis的学习(三)
  • 保障移动应用安全:多层次安全策略应对新兴威胁
  • Unity-Mirror网络框架从入门到精通之Attributes属性介绍
  • AWS ALB基础知识
  • 基于ASP.NET的动漫网站
  • 3D可视化产品定制:引领多行业个性化浪潮
  • 【Go学习】-01-4-项目管理及协程
  • 初始值变量类型
  • Maven 中的依赖管理机制
  • HTML - <a>
  • docker启动报错:Job for docker.service failed because the control process exited with error code.
  • 安卓NDK视觉开发——手机拍照文档边缘检测实现方法与库封装
  • 基于ffmpeg和sdl2的简单视频播放器制作
  • Oracle Database 23ai 新特性: UPDATE 和 DELETE 语句的直接联接
  • 自动采集商品信息、处理数据并自动上架到