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

Tomcat解析

架构图

核心功能

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

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

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

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

组件

Server

Tomcat实例,可以管理多个Service(服务)

Service

一个Service包含多个Connector和一个Engine,负责管理请求到应用的整个流程

Connector

在一个Service中,多个Connector负责不同协议的请求(HttpHttps等)

CoyoteTomcat连接器框架,封装了底层的网络通信(Socket请求及响应处理),为Catalina容器提供了统一接口,使Catalina容器与具体的请求协议及IO操作完全解耦

Engine

Tomcat核心处理模块,处理来自Connector的请求,并传递到合适的HostContext

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

http://www.lryc.cn/news/514413.html

相关文章:

  • UML之组合与聚合
  • 数据结构理论篇(期末突击)
  • 《一文读懂PyTorch核心模块:开启深度学习之旅》
  • 摆脱Zotero存储限制:WebDAV结合内网穿透打造个人文献管理云平台
  • Flutter封装一个三方ViewPager学习
  • 服务器数据恢复—离线盘数超过热备盘数导致raidz阵列崩溃的数据恢复
  • nginx-nginx的缓存集成
  • 【Vim Masterclass 笔记01】Section 1:Course Overview + Section 2:Vim Quickstart
  • 【数据库系列】Spring Boot 中使用 MyBatis 详细指南
  • Azure Airflow 中配置错误可能会使整个集群受到攻击
  • Python跨年烟花
  • 【代码】Python|Windows 批量尝试密码去打开加密的 Word 文档(docx和doc)
  • java开发中注解汇总​​
  • C# 设计模式(结构型模式):外观模式
  • PowerShell 常见问题解答
  • 计算机网络 (15)宽带接入技术
  • 前端Python应用指南(六)构建RESTful API:使用Flask和Django实现用户认证与授权
  • 【Unity3D】基于UGUI——简易版 UI框架
  • 算法排序算法
  • 第3章 总线
  • 手机实时提取SIM卡打电话的信令声音-双卡手机来电如何获取哪一个卡的来电
  • 共阳极LED的控制与短路问题解析
  • 华为消费级QLC SSD来了
  • liunx下载gitlab
  • 深度学习模型预测值集中在某一个值
  • Sqoop的使用
  • OpenGL ES 04 图片数据是怎么写入到对应纹理单元的
  • C# 设计模式的六大原则(SOLID)
  • 数据库自增 id 过大导致前端时数据丢失
  • 第二十六天 自然语言处理(NLP)词嵌入(Word2Vec、GloVe)