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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章