最近在研读tomcat相关书籍,但是细节一直忘记,所以特此记录下来。
一次完整请求的涉及的核心类如下:
JioEndPoint的Reactor--Executor--Http11Processor-CoyteAdapter-XXValve--EngineValve-XXValve--HostValve-XXValve--ContextValve-XXValve--WarperValve-Servlet--Controller--
下面是具体的请求流转过程:
1 当Tomcat启动后,Connector组件的Acceptor会持续监听指定端口的连接和接受socket。
2 当监听到客户端连接后,将连接交给Executor执行,开始执行请求和响应任务。
3 HttpProccessor负责从连接中读取消息报文 ,然后按照Http协议的去解析包,并且封装成Request对象。
4 Mapper组件根据Http协议请求行去匹配那个Host,Context,Wrapper去处理请求,将路由结果封装到Request对象中。
5 CoyoteAdapter组件负责将Connector和Engine容器链接起来,将Request对象和Response对象传递到Engine容器,调用管道。
6 Engine容器的管道开始处理请求,管道包含若干阀门(Valve),执行基础阀门EngineValve,负责调用Host容器管道。
7 依次类推,直到Warpper执行基础阀门,执行Servlet对象的处理方法,对请求进行逻辑处理。
扫描二维码关注公众号,回复:
2564403 查看本文章