问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

分享:详细讲解Tomcat之系统架构

发布网友 发布时间:2023-03-19 16:48

我来回答

1个回答

热心网友 时间:2023-11-18 10:15

Tomcat 或者 Jetty 就是一个“HTTP 服务器 + Servlet 容器”,我们也叫它们 Web 容器。

Spring 框架就是对 Servlet 的封装,Spring 应用本身就是一个 Servlet,而 Servlet 容器是管理和运行 Servlet 的。

Servlet 接口和 Servlet 容器这一整套规范叫作 Servlet 规范。Tomcat 和 Jetty 都按照 Servlet 规范的要求实现了 Servlet 容器。

Servlet 容器工作流程:

当客户请求某个资源时,HTTP 服务器会用一个 ServletRequest 对象把客户的请求信息封装起来,然后调用 Servlet 容器的 service 方法,Servlet 容器拿到请求后,根据请求的 URL 和 Servlet 的映射关系,找到相应的 Servlet,如果 Servlet 还没有被加载,就用反射机制创建这个 Servlet,并调用 Servlet 的 init 方法来完成初始化,接着调用 Servlet 的 service 方法来处理请求,把 ServletResponse 对象返回给 HTTP 服务器,HTTP 服务器会把响应发送给客户端。

Servlet 规范提供了两种扩展机制:Filter和Listener。

Tomcat 要实现 2 个核心功能:

因此 Tomcat 设计了两个核心组件连接器(Connector)和容器(Container)来分别做这两件事情。连接器负责对外交流,容器负责内部处理。

1,连接器

连接器需要完成 3 个高内聚的功能:

因此 Tomcat 的设计者设计了 3 个组件来实现这 3 个功能,分别是 EndPoint、Processor 和 Adapter。

Endpoint 和 Processor 放在一起抽象成了 ProtocolHandler 组件,连接器用 ProtocolHandler 来处理网络连接和应用层协议。

EndPoint 是一个接口,它的抽象实现类 AbstractEndpoint 里面定义了两个内部类:Acceptor 和 SocketProcessor。其中 Acceptor 用于监听 Socket 连接请求。SocketProcessor 用于处理接收到的 Socket 请求。

EndPoint 接收到 Socket 连接后,生成一个 SocketProcessor 任务提交到线程池去处理,SocketProcessor 的 Run 方法会调用 Processor 组件去解析应用层协议,Processor 通过解析生成 Request 对象后,会调用 Adapter 的 Service 方法。

2,容器

Tomcat 设计了 4 种容器,分别是 Engine、Host、Context 和 Wrapper。这 4 种容器不是平行关系,而是父子关系。

Context 表示一个 Web 应用程序;Wrapper 表示一个 Servlet,一个 Web 应用程序中可能会有多个 Servlet;Host 代表的是一个虚拟主机,或者说一个站点,可以给 Tomcat 配置多个虚拟主机地址,而一个虚拟主机下可以部署多个 Web 应用程序;Engine 表示引擎,用来管理多个虚拟站点,一个 Service 最多只能有一个 Engine。

请求定位 Servlet 的过程:Tomcat 会创建一个 Service 组件和一个 Engine 容器组件,在 Engine 容器下创建两个 Host 子容器,在每个 Host 容器下创建两个 Context 子容器。由于一个 Web 应用通常有多个 Servlet,Tomcat 还会在每个 Context 容器里创建多个 Wrapper 子容器。

每一个容器都有一个 Pipeline 对象。

3,一个请求在 Tomcat 中流转的过程

4,startup.sh 启动 tomcat 的过程:

粉丝福利,需获取Tomcat、spring等架构资料

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
海尔热水器着火一会就熄火出现E2怎么回事 什么网页游戏人气高 求十大网游游戏排行榜 弹弹堂万圣节活动怎么收集糖果 弹弹堂s勋章怎么获得 ...银行说会协同工商局和税务局去我的公司调查,是真的吗? 高中生必须住校吗 双力神洗衣机(双力神洗衣机怎么拆开清洗) 双力神ⅩQB50一397sN洗衣机如何使用? 怎么样加快宫缩开指 如何促进宫缩提前生产 有谁知道第三个字为“桂”的成语吗?请各位帮帮忙,谢谢!! 新冠开空调感觉气不够 梦到老家的那棵小枣树突然长的好大好大,梦里说是它被一个亲戚用嫁接技术把自己家的大枣树送给我加了 梦见桃花嫁接到枣树上的预兆 林蛙油发了莓还能不能吃? 切除乳腺后有什么注意的 红米note11支持息屏时钟 天玑810能玩香肠派对吗 什么手机可以玩香肠派对? 古代老子是谁 手工纸花的教程 花的折法 立体 折纸 手机充电有什么技巧? kindle邮件epub不支持pc hcv基因分型检测2a型阳性是轻还是重 丙肝用什么要好_丙肝 丙肝基因分型2a好治吗 魅蓝n0te手机能打电话上不了网络电话 盆腔炎怎么得来的呢 皱纹纸做花教程简单 直眉瞪眼造句 小孩出水痘发烧怎么办 四川锦江学院在哪? 四川大学锦江学院在哪个街道 四川大学锦江学院周边环境 楚越的介绍 楚越之地指的是现在江南之地吗? HTC手机耳机插进去声音还是外放,但耳机上的按钮仍能控制音乐播放暂停,说明接触应该没问题,求怎么办 htc手机插耳机有图标但还外放怎么办 我的htc one sc,为什么插耳机听音乐还是外放,还显示Beats Audio在手机扬声器不可用 HTC T528w插上耳机之后但是还是通过喇叭放歌,是怎么回事 为什么我的HTC oneX插上耳机还是公放 为什么htcg11手机插上耳机外放还是有声音的 我的手机是htc one su t528w 为什么耳机插上耳机也有声音外面也有声音 htc626耳机插上去手机听筒还有声音怎么回事 明道陈乔恩的电视剧 陈乔恩早期电视剧 明道和陈乔恩合作的电视剧有哪些 俩人成偶像剧的老搭档了 于小寒是明道演的哪个电视剧的角色 愁肠九回出处