tomcat的实现

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

核心配置文件是server.xml

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

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

​​

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

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

引擎是一个容器,其中包含一个或多个host对象,也即虚拟主机。

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

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

同时,host、Context、Wrapper都是容器。

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

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

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

​​

相关推荐
aP8PfmxS21 分钟前
Lab3-page tables && MIT6.1810操作系统工程【持续更新】
java·linux·jvm
无籽西瓜a2 分钟前
【西瓜带你学设计模式 | 第十二期 - 装饰器模式】装饰器模式 —— 动态叠加功能实现、优缺点与适用场景
java·后端·设计模式·软件工程·装饰器模式
吴声子夜歌3 分钟前
Node.js——zlib压缩模块
java·spring·node.js
海参崴-3 分钟前
深入剖析C语言结构体存储规则:内存对齐原理与实战详解
java·c语言·开发语言
南山乐只5 分钟前
Java并发工具:synchronized演进,从JDK 1.6 锁升级到 JDK 24 重构
java·开发语言·后端·职场和发展
无籽西瓜a6 分钟前
【西瓜带你学设计模式 | 第十三期 - 组合模式】组合模式 —— 树形结构统一处理实现、优缺点与适用场景
java·后端·设计模式·组合模式·软件工程
翊谦8 小时前
Java Agent开发 Milvus 向量数据库安装
java·数据库·milvus
晓晓hh8 小时前
JavaSE学习——迭代器
java·开发语言·学习
查古穆9 小时前
栈-有效的括号
java·数据结构·算法
Java面试题总结9 小时前
Spring - Bean 生命周期
java·spring·rpc