首页 > 其他分享 >【Tomcat】Tomat 处理请求的过程(图解)

【Tomcat】Tomat 处理请求的过程(图解)

时间:2024-11-09 12:19:24浏览次数:1  
标签:Container Tomcat Tomat Connector MVC 连接器 图解 请求

1  前言

最近在复习 Tomcat 的请求处理过程,之前也看过一些局部的细节,【SpringBoot + Tomcat】【一】请求到达后端服务进程后的处理过程-连接器的创建和执行【SpringBoot + Tomcat】【二】请求到达后端服务进程后的处理过程-连接的处理细节,但是没看完整,这节我们从整体看一下 Tomcat 从接收请求到最后到达 SpringMVC 的 DispatcherServlet 的过程。

另外参考我的两篇,可以帮助你理解 DispatcherServlet 是如何注入到 Tomcat 的过程(本节不会讲这个):【Spring MVC + Tomcat】Spring MVC 传统VS现代方式的启动过程对比【Spring MVC + Tomcat】追本溯源,Spring MVC是如何和Tomcat关联到一块的呢?

2  整体一览

我们先从整体的请求处理上,有一个全局的概念:

一个 Tomcat 就是一个 Server 而一个 Server 里可以有多个Service ,一个Service里可以有多个 Connector 和 一个 Container(Container是个全称,它内部包含 Engine、Host、Context、Wrapper)

请求过程大概分两块,一边是 Connector 连接器的范畴,一边是 Container 范畴,中间通过 CyoteAdapter 将连接起里的请求下发给右边容器执行。容器执行采用的是责任链的方式:Pipline 表示整个责任链、Value 是每个链上的节点。

接下来,就从连接器 Connector 到内部的协议处理器 ProtocolHandler 再到内部的连接点 Endpoint 再到 CyoteAdapter 将请求下发给 Container 来看一下,这里以 HTTP/1.1为例,都是采用图示哈,图上的注释应该比较清楚,就不做文字解释了哈。

3  连接器 Connector

3.1  实例化

3.2  初始化

3.3  启动

4  协议处理器 ProtocolHandler

4.1  初始化

4.2  启动

5  连接点 Endpoint

5.1  初始化

5.2  启动

5.3  Accpet 线程

5.4  Poller 线程

5.5  线程池执行过程

图有点大,截图截不全,只好导出哈。

6  CyoteAdapter 委派以及 Container 请求执行

7  小结

好啦,其实请求中的细节还有很多,包括超时处理,一些 Socket 关闭以及报错处理可能在图上没严格表示出来还请理解一下,细节太多了哈哈= =,本节主要是看一下请求的经过的一些核心组件核心类的处理最后落点到 DispatcherServlet 的一条链路,有理解不对的地方还请指正哈。

标签:Container,Tomcat,Tomat,Connector,MVC,连接器,图解,请求
From: https://www.cnblogs.com/kukuxjx/p/18536455

相关文章

  • 图解 ARP 协议
    注:本文为陈鑫杰《图解ARP协议》系列的合集。作者行文生动有趣。图解ARP协议(一)ARP原理陈鑫杰拼客院长陈鑫杰2017年08月25日07:07一、ARP概述如果要在TCP/IP协议栈中选择一个**“最不安全的协议”**,那么我会毫不犹豫把票投给ARP协议。我们经常听到的这......
  • 图解析网络【Published as a conference paper at ICLR 2024】
    【文章来源:https://arxiv.org/pdf/2402.14393】摘要motivation:图池是建立在GNN之上的。它旨在通过将一组节点及其底层结构压缩为更简洁的表示来捕获图级信息。早期的图池化方法,如mean,add或pool对图中的所有节点执行排列不变操作。这些平面池化方法忽略了节点之间的区别,无......
  • Tomcat弱口令爆破
    Tomcat弱口令爆破docker的使用docker-composeup-d启动环境并在后台运行docker-composeps查看启动的容器docker-composedown对项目靶场进行关闭dockerps对靶场的端口号进行查看tomcat对登录界面进行抓包,然后设置变量进行爆破,发现为base64编码进行设置p......
  • 通俗易懂的KVcache图解
    在分享之前先提出三个问题:1.为什么KVCache不保存Q2.KVCache如何减少计算量3.为什么模型回答的长度不会影响回答速度?本文将带着这3个问题来详解KVcacheKVcache是什么kvcache是指一种用于提升大模型推理性能的技术,通过缓存注意力机制中的键值(Key-Value)对来减少冗余......
  • 【问题解决】Tomcat由低于8版本升级到高版本使用Tomcat自带连接池报错无法找到表空间
    问题复现项目上历史项目为解决漏洞扫描从Tomcat6.0升级到了9.0版本,服务启动的日志显示如下警告,数据源是通过JNDI方式在server.xml中配置的,控制台上狂刷无法找到表空间的错误(没截图)报错:06-Nov-202410:32:03.701警告[main]java.util.ArrayList.forEachName=数据源Proper......
  • 《图解设计模式》 读后笔记
    设计模式很早前看过,那时候囫囵吞枣,从来没有系统的总结过,因为对于面试而言问的问题总是答的不精确。这次又借助《图解设计模式》复习了一遍,自己写了一篇总结。23种设计模式看起来很多其实大多数在开发中都见到过。甚至有的设计模式对于一个初学者而言即使不知道设计模式也会应......
  • tomcat转东方通
    目录前言登录服务器tomcat部署应用东方通部署东方通配置启动参数配置-JVM参数启动参数配置-服务器参数WEB容器配置-虚拟主机管理WEB容器配置-HTTP通道管理东方通密码重置前言本文简要Linux环境介绍tomcat部署的服务,换成中间件是东方通之后如何部署。登录服务器不......
  • 科普文:软件架构Linux系列之【图解存储 IO性能优化与瓶颈分析】
    概叙科普文:软件架构Linux系列之【Linux的文件预读readahead】-CSDN博客科普文:软件架构Linux系列之【并发问题的根源:CPU缓存模型详解】-CSDN博客从上面冯诺依曼结构下的cpu、内存、外存之间的延迟就可以看出,磁盘I/O性能的发展远远滞后于CPU和内存,因而成为现代计算机系统的......
  • Tomato靶机拿取shell
    1.扫主机arp-scan-Ieth0-l2.扫端口nmap-A-p--sS-T4--min-rate=10000192.168.163.1553.扫目录发现dirsearch扫不到,可以换dirb扫一下4.挨个目录看一眼5.最后在目录下的info.php有phpinfo信息发现allow_url_fopen和allow_url_include处于一开一闭......
  • 《图解设计模式》 第九部分 避免浪费
    第二十章Flyweight模式publicclassBigcharFactory{//这里对使用到的内容进行了缓存privateHashMappool=newHashMap();//有则直接取,无则创建并保存到缓存。publicsynchronizedBigChargetBigChar(charcharname){BigCharbc=(BigChar)pool.get("......