tomcat 是如何处理一个请求的呢

一、Tomcat的整体架构

  • 一个Tomcat只有一个server,server服务器有多个service。
  • service 由多个connector  和一个container 组成。
  • connector  是请求接收器,负责接收请求和把socket转化为request及response转化。

二、connector是如何处理请求的?

  • 不同协议的请求有不同的ProtocolHandler处理,ProtocolHandler由endpoint,processor,Adapter  组成。

  • Endpoint 接收请求,处理底层的socket网络请求,交由Hander接口处理。

  • Handler 调用Processor将socket请求封装成request,.

  • 最后由Adapter 适配对应的Servlet容器进行处理请求。

  • AsyncTimeout 处理异步超时的请求。

  • Container 负责具体的请求处理和返回请求结果。

三、Container 架构分析:

  • 架构图:

  • engine: engine 表示管理器,管理多个站点,一个service只有一个engine。
  • Host: 站点,虚拟主机。可以配置多个。
  • Context: 代表tomcat下运行的一套程序,比如 doc,Root.Root  默认是主应用程序。即访问时默认的访问。
  • Wrapper: 封装Servlet。
  • 那么container是如何通过这四个容器进行处理请求的呢?
  • 责任链模式:Pipeline-Value  管道的责任链模式。
  • 每个Pipeline都有一个基础的Value,而且是在管道的最后一个执行,这个Value叫做BaseValue,BaseValue是不可删除的;

    在上层容器的管道的BaseValue中会调用下层容器的管道。

  • 那么请求就是一层层的从上到下进行处理,每层只处理自己处理的事情。

  • 处理完成后就可以返回response给Connector,由Connector返回给客户端。

参考:https://zhuanlan.zhihu.com/p/35398064

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值