加入收藏 | 设为首页 | 会员中心 | 我要投稿 甘南站长网 (https://www.0941zz.com/)- 科技、行业物联网、开发、云计算、云管理!
当前位置: 首页 > 运营中心 > Tomcat > 正文

Tomcat Catalina为何不new出来原理解析

发布时间:2023-02-20 10:09:27 所属栏目:Tomcat 来源:互联网
导读:一、Catalina为什么不new出来? 掌握了Java的类加载器和双亲委派机制,现在我们就可以回答正题上来了,Tomcat的类加载器是怎么设计的? 1.Web容器的特性 Web容器有其自身的特殊性,所以在类加载器这块是不能完全使用JVM的类加载器的双亲委派机制的。在Web容器

                  try {
                      clazz = Class.forName(name, false, parent);
                      if (clazz != null) {
                          if (log.isDebugEnabled()) {
                              log.debug("  Loading class from parent");
                          }
                          if (resolve) {
                              resolveClass(clazz);
                          }
                          return clazz;
                      }
                  } catch (ClassNotFoundException e) {
                      // Ignore
                  }
              }
          }
          throw new ClassNotFoundException(name);
      }
  Web应用类加载器默认的加载顺序是:
 
  (1).先从缓存中加载;
  (2).如果没有,则从JVM的Bootstrap类加载器加载;
  (3).如果没有,则从当前类加载器加载(按照WEB-INF/classes、WEB-INF/lib的顺序);
  (4).如果没有,则从父类加载器加载,由于父类加载器采用默认的委派模式,所以加载顺序是AppClassLoader、Common、Shared。
  tomcat提供了delegate属性用于控制是否启用java委派模式,默认false(不启用),当设置为true时,tomcat将使用java的默认委派模式,这时加载顺序如下:
 

(编辑:甘南站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读