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

tomcat核心组件

目录

1 tomcat核心功能说明

2 tomcat核心组件说明

2.1 Sever组件

2.2 Service组件

2.3 Connector组件

2.4 Container组件

2.4.1 Engine容器

2.4.2 Host容器

2.4.3 Context容器

2.4.3 Wrapper容器

3 tomcat核心组件关系

4 tomcat处理客户端请求流程


1 tomcat核心功能说明
  • 处理socket连接,选择I/O模型使用NIO,AIO还是APR
  • 协议解析为tomcat request对象,解析的协议是http还是ajp
  • 根据请求内容,匹配到对应的Servlet对象,处理请求并返回响应
2 tomcat核心组件说明

2.1 Sever组件
  • 整个tomcat服务
  • 包含多个Service组件
  • 负责启动和管理Service
  • 同时监听8005端口发过来的SHUTDOWN指令,用于关闭整个tomcat服务
2.2 Service组件
  • 包含多个用于接收客户端连接的Connector组件,和处理请求的Engine组件,以及线程池Executor组件
  • 一个Server组件内可以配置多个Service组件,实现不同端口访问同一台机器上的不同应用
2.3 Connector组件
  • tomcat与客户端的连接器,监听固定端口接收客户端请求
  • 将请求转发给Container组件,并将响应返回给客户端
2.4 Container组件
  • tomcat中,容器是用来承载Servlet的
  • tomcat设计了Engine,Host,Context和Wrapper四种容器
  • 这四种容器是父子关系
2.4.1 Engine容器
  • 引擎容器
  • tomcat的顶层容器,用来管理多个虚拟站点
  • 一个Service最多只能有一个Engine
2.4.2 Host容器
  • 虚拟主机容器
  • 负责web应用的部署和Context的创建
  • 一个Engine中可以配置多个虚拟库主机,并且一个虚拟库主机下可以配置多个web 应用程序

2.4.3 Context容器
  • Web应用上下文,包含多个Wrapper
  • 负责web配置的解析,管理所有的web资源
  • 一个Context对应一个web应用程序
2.4.3 Wrapper容器
  • 表示一个Servlet,最底层的容器
  • 对Servlet的封装,负责Servlet实例的创建,执行和销毁
3 tomcat核心组件关系

  • Server组件相当于整个tomcat服务
  • Service组件用于整合Connector,Engine容器,线程池

  • Connector用于接收客户端连接并接受请求数据
  • 客户端请求时直接连接具体端口,即可定位到具体的Service组件

  • 线程池用于异步执行客户端请求
  • 在Connector中配置executor用于指定异步执行请求时使用哪个连接器

  • Engine用于匹配到客户端请求对应的Servlet并执行请求
  • 通过Mapper组件匹配客户端请求对应的Host组件,Context组件,Wrapper组件

4 tomcat处理客户端请求流程

  • 客户端发送请求时连接指定端口,可以定位到具体的Service,即可匹配到Engine容器
  • CoyoteAdapter通过Mapper组件匹配到对应的Host,Context,Wrapper组件

http://www.xdnf.cn/news/946639.html

相关文章:

  • tomcat组件架构设计
  • ubuntu服务器上极简部署odoo18
  • Spring是如何解决Bean的循环依赖:三级缓存机制
  • 一款用于react-native监听app[AppState]前后台的自定义Hooks开源插件
  • 基于 PyTorch 和 OpenCV 的实时表情检测系统
  • 企业如何增强终端安全?
  • 前端面试题 微信小程序兼容性问题与组件适配策略
  • 融智学本体论体系全景图
  • 西电计组第五章-指令系统
  • VmWare Ubuntu 16.04 搭建DPDK 19.08.2
  • 【JavaAPI搜索引擎】自动化测试报告
  • 【触想智能】工业平板电脑在无人巡检设备上的应用优势
  • 【Elasticsearch】Elasticsearch 在大数据生态圈的地位 实践经验
  • Nosql之Redis集群
  • 突破原生整数范围限制:C++高精度乘法算法模板的实现与优化
  • 信号的诞生:Linux进程信号的启示与奥秘
  • Spring Boot 与 Kafka 的深度集成实践(一)
  • AI编程--插件对比分析:CodeRider、GitHub Copilot及其他
  • 大模型——基于Docker+DeepSeek+Dify :搭建企业级本地私有化知识库超详细教程
  • Shell 解释器​​ bash 和 dash 区别
  • AWS中国云的定时任务(AWS EventBridge+AWS Lambda)
  • 中医有效性探讨
  • spdlog 介绍与使用指南
  • lambda的惰性求值方法与及早求值方法
  • Vue3 PC端 UI组件库我更推荐Naive UI
  • go 里面的指针
  • [蓝桥杯 2024 国 Java B] 美丽区间
  • pymilvus
  • VRFF: Video Registration and FusionFramework 论文详解
  • 启动已有小程序项目