在执行org.apache.catalina.startup.Catalina#load的时候会执行org.apache.catalina.core.StandardServer#init,然后会调到initInternal
protected void initInternal() throws LifecycleException { ...... //支持JNDI资源配置的类
//这个类的有两个文件类型的成员变量catalinaHome和catalinaBase,它们的值是通过Catalina对象获取的,
//根源就是tomcat配置的两个系统变量catalina.home和catalina.base
// Register the naming resources
globalNamingResources.init(); ......
//初始化service对象
// Initialize our defined Services
for (int i = 0; i < services.length; i++) {
services[i].init();
}
}
catalinaHome和catalinaBase区别和作用
其Tomcat目录结构如下:
- bin (运行脚本)
- conf (配置文件)
- lib (核心库文件)
- logs (日志目录)
- temp (临时目录)
- webapps(自动装载的应用程序的目录)
- work (JVM临时文件目录[java.io.tmpdir])
当在一台服务器上部署多个tomcat实例时,多个taomcat实例可以共用一部分目录。
catalina.home(安装目录):指向共用目录,即bin和lib的父目录。
catalina.base(工作目录):指向每个Tomcat实例的私有目录,即conf、logs、temp、webapps和work的父目录。
bin 和 lib 目录被多个tomcat示例共用
conf、logs、temp、webapps和work 目录,每个Tomcat实例拥有独立拥有