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

Tomcat的实现

在一台电脑上启动tomcat,tomcat是server,即服务器。服务器只会被实例化一次,tomcat这只猫就是服务器。服务器下包含多个子节点服务,即service,顾名思义就是对外提供服务。服务器通常只有一个服务,默认是卡特琳娜Catalina。

核心配置文件是server.xml

server

根节点就是Server,即tomcat猫🐱,只会被实例化一次,下面可以有多个service,但通常只有一个,默认为卡特琳娜Catalina.

service

Service组件的作用就是对外提供服务。

一个service有一个引擎,和按协议划分多个连接器connector,比如负责http协议(80端口)的连接器、负责https(443端口)的连接器、负责其他协议的连接器等等.....

连接器connector

连接器负责通信;引擎复杂请求的处理。

不同的连接器负责监听不同的网络端口(可配置端口),处理请求,比如http协议默认的80端口。一个连接器即是一个线程,线程一直在循环运行,接收所有先后到来的网络请求,并将每一个请求都按对应的协议转换为不同的request对象,随后将其作为参数使用引擎对象进行调用。

host

引擎是一个容器,其中包含一个或多个host对象,也即虚拟主机。host的存在保证了单个tomcat实例支持多个域名或主机名,使得一台tomcat可以去处理多种请求。【根据不同的目标地址来区分不同的请求

切记:host配置的是域名或主机名,一条URL中后面的请求方式等信息是取决于下面的context组件

context

为了实现一个虚拟主机下托管多个不同的web应用程序(Context)每个 <Context> 组件代表一个特定的Web应用程序上下文,存放着该Web应用程序的配置信息。

通过配置不同的 <Context>,管理员可以为每个Web应用程序定制独特的设置,确保它们在同一个虚拟主机下能够独立运行且相互隔离。

因为request对象包含完整的URL等信息,所以引擎能够解析到对应的虚拟主机host上(域名),进而在虚拟主机上找到对应的应用,最终找到应用下对应的servlet(通常就是我们写的业务代码)对请求进行处理。

wrapper

一个Context应用包含一个或多个servlet实例,同一个servlet的所有实例被Wrapper容器进行统一管理

host、Context、Wrapper都是容器。

连接器给出的request请求对象中包含了他要访问的servlet的详细路径,因此给到容器中,都能通过路径准确的传递给下一个容器(主机名:应用名/servlet名)

当我们编写的servlet完成(业务逻辑)之后,连接器将从引擎对象的方法调用获得一个返回值response对象,最后再将respondse对象转化为字节流返回给浏览器。

至此,一个请求的完整过程就结束了。这就是tomcat服务器的架构和原理。

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

相关文章:

  • RK3576 Camera:资源介绍
  • Symfony DomCrawler库在反爬虫应对中的应用
  • 1Panel应用推荐:Uptime Kuma
  • 传输文件协议FTP与LFTP
  • expdp和impdp 实战
  • 知了汇智引领未来:全新AIGC系列课程,打造数字时代人才新标杆
  • 软件项目验收第三方测试报告如何获取
  • linux下脚本监控mysql主从同步异常时发邮件通知
  • 【MySQL】分组排序取每组第一条数据
  • 滚珠螺杆在精密机械设备中如何维持精度要求?
  • 现代 c++ 三:右值引用与移动语义
  • Java学习【类与对象—封装】
  • Co-Driver:基于 VLM 的自动驾驶助手,具有类人行为并能理解复杂的道路场景
  • 硅胶可以镭射吗?
  • 财务风险管理:背后真相及应对策略
  • MySQL深入理解事务(详解)
  • 【Linux系统】进程控制
  • Go语言数值类型教程
  • Linux进程控制——Linux进程等待
  • GPT-4o:融合文本、音频和图像的全方位人机交互体验
  • 灵活的静态存储控制器 (FSMC)的介绍(STM32F4)
  • nginx-rtmp
  • nginx 代理java 请求报502
  • 面试集中营—Redis面试题
  • 关于使用git拉取gitlab仓库的步骤(解决公钥问题和pytho版本和repo版本不对应的问题)
  • Django图书馆综合项目-学习(2)
  • vue3+ts 获取input 输入框中的值
  • Gin框架返回Protobuf类型:提升性能的利器
  • HTML满屏漂浮爱心
  • 爬虫应该选择住宅ip代理还是数据中心代理?