Tomcat基本组件及处理响应过程

组成

Tomcat高度抽象可以看为由两大核心组件构成,一个Connector连接器组件,还有就是Container容器组件;Connector组件负责处理客户端请求的连接,包括接收客户端连接、接收客户端的消息报文以及消息报文的解析工作;而Container组件则负责对客户端的请求进行逻辑处理,并将结果返回给客户端。

  1. Server
    代表tomcat的运行实例,最顶级组件;一个JVM只会对应一个server,包含了其他所有组件
  2. Service
    服务的抽象,代表请求从接受到处理过程中的组件的所有集合
  3. Connector
    负责接收客户端的连接信息并接收报文,并进行处理,消息报文经他解析之后提交到容器中
  4. Engine
    四个容器之一;全局Servlet引擎,一个Servlet只能有一个Engine,但可以有若干Host容器
  5. Host
    代表虚拟主机,是根据URL地址中的主机部分抽象的,一个Servlet引擎可以拥有若干个Host容器,一个Host容器又可以拥有若干个Context容器。
  6. Context
    代表Web应用的抽象,Web应用部署到Tomcat上之后就转化为了Context对象。包含了各种静态资源,若干Servlet(Wrapper容器)、以及其他动态资源
  7. Wrapper
    相当于Servlet,一个Servlet对应一个Wrapper容器,包含了Servlet组件和ServletPool(Servlet对象池)组件。

请求处理的完整流程

下图表示了客户端从发起请求到响应的整个过程在Tomcat内部如何流转。
 Tomcat请求流转过程图

  1. Tomcat启动后,Connector对象的Acceptor(接收器)将会开始监听请求,即看是否有客户端套接字连接并接收Socket
  2. 如果监听到请求,则将连接放入(Excutor)线程池中处理,开始执行请求响应任务
  3. Connector对象中的HTTP11 processor读取客户端请求报文,然后开始解析HTTP请求的请求行、请求头、请求体。并将解析之后的结果封装成Request对象
  4. Connector对象中的Mapper组件根据HTTP协议请求行的URL属性值和请求头的Host属性值来匹配Host、Context、Wrapper容器来处理请求;即匹配相应的Servlet,然后将路由的结果放入Request对象中
  5. Connector对象中的CoyoAdaptor将前面生成的Reuest对象和Response对象传递到Engine容器,调用它的管道
  6. Engine容器的管道开始处理处理请求,执行一些阀门之后执行EngineValue继续往下调用下一级容器Host的管道
  7. Host容器的管道也开始处理请求,同样也是执行自带的若干阀门之后执行HostValue继续往下调用下一级容器Context的管道
  8. Context容器的管道执行完若干阀门之后执行基础阀门ContextValue,调用最低级容器Wrapper的管道
  9. Wrapper管道开始处理请求,首先执行若干阀门,然后执行基础阀门WrapperValue,该方法会执行Wrapper容器对应的Servlet对象的处理方法,并将结果输出到客户端

简略流程:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值