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
的request和response。
CoyoteAdaptor -> PipeLine: pipeline通过链式处理把请求
从connector发到container处理。
PipeLine -> StandardEngine: 实际上是StandardEngineValue
StandardEngine -> StandardHost: 实际上是StandardHostValue
StandardHost -> StandardContext: 实际上是StandardContextValue
StandardContext -> StandardWrapper: 实际上是StandardWrapperValue
StandardWrapper -> Servlet: wrapper交给servlet处理请求
@enduml
原创博文,未经许可不得转载,转载请注明出处。
原文地址:https://www.cnblogs.com/Think-007/p/14408972.html