Tomcat处理请求
2021-04-11 12:40:06 1 举报
Tomcat处理请求
作者其他创作
大纲/内容
Mapper
org.apache.catalina.core.StandardWrapperValve#invoke
Engine
org.apache.tomcat.util.net.SocketProcessorBase#runorg.apache.tomcat.util.net.NioEndpoint.SocketProcessor#doRunorg.apache.coyote.AbstractProtocol.ConnectionHandler#processorg.apache.coyote.AbstractProcessorLight#processorg.apache.coyote.http11.Http11Processor#service
Processor
NioEndpoint.Acceptor#487 socket = serverSock.accept(); org.apache.tomcat.util.net.AbstractEndpoint#processSocket
Servlet
org.apache.catalina.core.StandardHostValve#invoke
org.apache.catalina.core.StandardEngineValve#invoke
CoyoteAdapter
org.apache.catalina.core.StandardContextValve#invoke
处理
Host
org.apache.catalina.core.ApplicationFilterChain#doFilterorg.apache.catalina.core.ApplicationFilterChain#internalDoFilter
步骤如下:1) Connector组件Endpoint中的Acceptor监听客户端套接字连接并接收Socket。2) 将连接交给线程池Executor处理,开始执行请求响应任务。3) Processor组件读取消息报文,解析请求行、请求体、请求头,封装成Request对象。4) Mapper组件根据请求行的URL值和请求头的Host值匹配由哪个Host容器、Context容器、Wrapper容器处理请求。5) CoyoteAdaptor组件负责将Connector组件和Engine容器关联起来,把生成的Request对象和响应对象Response传递到Engine容器中,调用 Pipeline。6) Engine容器的管道开始处理,管道中包含若干个Valve、每个Valve负责部分处理逻辑。执行完Valve后会执行基础的 Valve--StandardEngineValve,负责调用Host容器的Pipeline。7) Host容器的管道开始处理,流程类似,最后执行 Context容器的Pipeline。8) Context容器的管道开始处理,流程类似,最后执行 Wrapper容器的Pipeline。9) Wrapper容器的管道开始处理,流程类似,最后执行 Wrapper容器对应的Servlet对象的 处理方法
Wrapper
执行各个Filter
处理请求
执行Servlet
接收请求
FilterChain
构造FilterChain
Context
执行
路径映射
EndPoint
0 条评论
下一页