tomcat源码 StandardServer

在执行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实例拥有独立拥有

原文地址:https://www.cnblogs.com/grasp/p/10089650.html