zoukankan      html  css  js  c++  java
  • tomcat类加载机制

    1.1            tomcat类加载机制

    1.1.1    概览

                   Bootstrap
              |
              System
              |
              Common
           /     
            Webapp1   Webapp2 ...

    备注:这里的加载模型和jvm的三层classloader有区别。总体思想类似。

    1.1.2    各层加载器

    1.1.2.1         Bootstrap

    此类加载器包含Java虚拟机提供的基本运行时类。

    加载java/jre/lib 和 java/jre/lib/ext.  相当于jvm的bootstrap和extensions class loader。

    1.1.2.2             System

    此类加载器通常从CLASSPATH环境变量的内容初始化。Tomcat内部类和Web应用程序都可以看到所有这些类。

    加载下面路径的jar包

    • $CATALINA_BASE/bin
    •  $CATALINA_HOME/bin

    1.1.2.3             Common

    此类加载器包含对Tomcat内部类和所有Web应用程序都可见的其他类。

    加载下面路径的jar包

    • $CATALINA_BASE/lib
    •  $CATALINA_HOME/lib

    1.1.2.4             WebAppX

    为部署在单个Tomcat实例中的每个Web应用程序创建一个类加载器。/WEB-INF/classesWeb应用程序目录中的所有解压缩的类和资源,以及Web应用程序/WEB-INF/lib目录下的JAR文件中的类和资源,都对此Web应用程序可见,但对其他应用程序不可见。

    Web应用程序类加载器与默认Java委托模型不同。当从web应用的(webappX类加载器)加载class的请求被处理时,这个类加载器会首先尝试从本地资源自己加载这个类,而不是先委托给父类加载器。

    因此,从Web应用程序的角度来看,类或资源加载按以下顺序查找以下存储库:

    • JVM的Bootstrap类
    • 您的Web应用程序的 / WEB-INF /classes
    • 您的Web应用程序的 /WEB-INF/lib/*.jar
    • 系统类加载器类(如上所述 System)
    • 常见的类加载器类(如上所述,Common)
  • 相关阅读:
    我从Linux走来,选择了Windows
    静态路由(三路由)
    设置跨交换机VLAN
    服务器只能被动接受
    理解 atime,ctime,mtime (下)
    理解 atime,ctime,mtime (上)
    visualvm连接服务器jvm进行监控
    mysql 日期函数格式
    关于springmvc跨域
    Javassist初体验
  • 原文地址:https://www.cnblogs.com/gc65/p/10170796.html
Copyright © 2011-2022 走看看