tomcat请求流程浅解

tomcat的架构图大概是这样的规律,

一个server有多个servcie,

一个service分为conector、container、realm、logging、sesssion、jspaer等组件,

connector分为http/ajp的connector,

container有一个engine,

一个engine有多个host,

一个host有多个context,

一个context有多个wrapper,

host对应的就是虚拟服务,context对应的就是一个web应用,wrapper对应着一个servlet。

接下来再看图,结构大概是这样子。

 

 其实在connector内部还有好多组件,比如 protocol 、endpoint 、acceptor等。读了源码之后梳理的大概逻辑如下,做个笔记,箭头指向是依赖调用链路。

 图可能不太清晰,附上plantuml源码。

@startuml


Client -> Connector
Connector -> Http11Protocol
Http11Protocol -> JioEndpoint
JioEndpoint -> Acceptor
Acceptor -> SocketProcessor
SocketProcessor -> Http11ConnectionHandler
Http11ConnectionHandler -> Http11Processor
Http11Processor -> CoyoteAdaptor: 这开始处理Tomcat\n的request和response。
CoyoteAdaptor -> PipeLine: pipeline通过链式处理把请求\n从connector发到container处理。
PipeLine -> StandardEngine: 实际上是StandardEngineValue
StandardEngine -> StandardHost: 实际上是StandardHostValue
StandardHost -> StandardContext: 实际上是StandardContextValue
StandardContext -> StandardWrapper: 实际上是StandardWrapperValue
StandardWrapper -> Servlet: wrapper交给servlet处理请求
@enduml

 

posted @ 2021-02-17 15:36  Think-007  阅读(66)  评论(0编辑  收藏  举报