Tomcat8源码分析-请求处理过程

天涯浪子 提交于 2019-12-11 14:35:05

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

上一篇:Tomcat8源码分析-启动流程-start方法

 此篇主要讲Tomcat8从接收请求到处理请求的时序图画出来,并用文字描述一下主要流程

时序图

说明

文字描述流程之前先提示如下两点:
1.Acceptor、Poller、SocketProcessor都是NioEndpoint的内部类

2.Tomcat不一定只有NioEndpoint还有Nio2Endpoint AprEndpoint,只是常规的请求和默认都使用的是http和nio,所以在时序图中就用NioEndpoint了

 

Acceptor负责接收发起的请求,经过NioEndpoint和Poller将socket最终包装为一个PollerEvent放入到SynchronizedQueue同步队列当中,接着继续等待新的请求到底重复前面的步骤

Poller循环判断同步队列中是否有问题处理的Event,如果有则使用WindowsSelectorImpl读取socket,将socket中的attachment添加到SocketProcessor( implements runnable),使用线程池启动SocketProcessor

SocketProcessor经过一层层调用开始Engine-Host-Context-Wrapper的Pipeline的First Valve,最后由StandardWrapperValve调用ApplicationFilterChain调用HttpServlet的service,进而调用到自己的Servlet中的doXxx方法

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!