欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Tomcat 类加载器

程序员文章站 2022-05-12 11:57:04
...

Tomcat 拥有不同的自定义类加载器,以实现对各种资源库的控制。一般来说,Tomcat主要用类加载器解决一下4个问题:

  1. 同一个Web服务器里,各个web项目之间各自使用Java类库要互相隔离
  2. 同一个Web服务器里,各个Web项目之间可以提供共享的java类库
  3. 为了使服务器不受web项目的影响,应该使服务器的类库与应用程序类库互相独立
  4. 对于支持JSP的Web服务器,应该支持热插拔功能

Tomcat 类加载器

                                                                           Tomcat7 中类加载器

下面看看Tomcat7版本中对 这些类加载器处理的代码:

private void initClassLoaders() {
        commonLoader = createClassLoader("common", null);  // commonLoader的加载路径为common.loader
        if( commonLoader == null ) {
            commonLoader=this.getClass().getClassLoader();
        }
        catalinaLoader = createClassLoader("server", commonLoader); // 加载路径为server.loader,默认为空,父类加载器为commonLoader
        sharedLoader = createClassLoader("shared", commonLoader); // 加载路径为shared.loader,默认为空,父类加载器为commonLoader
    }
 private ClassLoader createClassLoader(String name, ClassLoader parent) throws Exception {
        String value = CatalinaProperties.getProperty(name + ".loader");
        if ((value == null) || (value.equals("")))
            return parent;      // catalinaLoader与sharedLoader的加载路径均为空,所以直接返回commonLoader对象,默认3者为同一个对象
    }

相关标签: Tomcat 类加载器