web应用加载时序图
Host
host加载web应用(context)的入口有两个
- 在catalina解析Server.xml构造Server实例时,若配置文件的Host元素存在Context子元素,则将解析出的context作为子元素添加
- HostConfig自动扫描部署目录,创建Context实例并启动
HostConfig对于Context的部署
默认情况下,server.xml中不会配置context,仅包含Host配置如下
appBase指定了Web应用部署的基础目录,Tomcat通过HostConfig自动扫描拷贝到该目录下的web应用并进行自动部署
Host共有如下部署Context的方式
- contex描述文件部署
将Server中的context的配置单独拿出生成一个xml文件,Host扫描这些文件的路径由Host的xmlBase属性指定 - web目录部署
扫描Host配置的appBase下的webApp自动部署,若webApp的META-INF/context.xml存在,解析META-INF/context.xml替代默认配置 - war包部署
同web目录部署,增加了解压缩的处理
从代码中也可以看出这三种部署方式
//org.apache.catalina.startup.HostConfig#deployApps()
protected void deployApps() {
File appBase = host.getAppBaseFile();
File configBase = host.getConfigBaseFile();
String[] filteredAppPaths = filterAppPaths(appBase.list());
// Deploy XML descriptors from configBase
deployDescriptors(configBase,