How Tomcat works 13:Host容器和Engine容器

一、 Host
    容器Host比较简单,主要配置hostname,别名,添加默认和包含的context,以及是否允许自动部署等功能。
    (1)Host总体设计架构

How Tomcat works 13:Host容器和Engine容器   

(2)Request的处理流程
   A. 一个Request进入host后首先会使用pipleline责任链依次调用配置好的valves
   B. 在StandardValve内部standardHostMapper中获取匹配URI获取相应的context对象
   C. 获取context的classloader作为当前的加载类,获取context的mananger获取对应session
   C.调用context.invoke(),处理request和response

(3)Host的必要性
   后续context的配置使用contextConfig,而后去读取contants.applicationWebXml(/WEB-INF/web.xml)生成fullPath = context.getName()+path; String hostName = context.getParent().getName()

二、Engine容器
(1)总体设计架构
   Engine是Host的父容器,可以配置多个hostName,同时可以设置获取service、context

How Tomcat works 13:Host容器和Engine容器

(2)Request请求流程:
   A. request进入Engine后调用pipeline中的standardEngineValve
   B. 会校验request是否是http请求,校验request协议是否1.1且有servername
   C. 调用engine.map()匹配uri获取对应的host
   D. 调用host.invoke(req, resp)