为什么Tomcat不用遵循双亲委派

1. 什么是双亲委派

一般大家我应该先写一篇怎么把.class加载到JVM里面的一篇文档,但是我发现有好多这样的文章了,所以这里就没有必要给大家讲解一下怎么加载的过程了

这里引用一张图,大家看过其他人的博客在看到这张图,就应该知道,一个class怎么加载到JVM里面了。

接下来就是双亲委派了,在了解双亲委派之前呢,大家首先需要了解几个类加载器。

(1)启动类加载器-》Bootstrap ClassLoader

它主要负责加载我们在机器上安装的额Java目录下的核心类。不管我们是做Java开发,还是需要部署Java程序,不管我们是使用的事Windows还是Linux,我们都需要提前安装一个JDK,在你安装的JDK目录下面是不是有一个lib目录,这里就有Java最核心的一些类库,支撑我们的Java开发和运行。

这里只要我们的JVM启动,首先就会依托启动类加载器,去加载你的Java安装目录下的lib目录中的核心类库。

(2)扩展类加载器-》Extension ClassLoader

负责加载java平台中扩展功能的一些jar包,包括$JAVA_HOME中jre/lib/*.jar或-Djava.ext.dirs指定目录下的jar包。

(3)应用程序类加载器-》Application ClassLoader

这个类加载器就负责去加载ClassPath环境变量所指定的路径中的类,大致可以理解为,加载你写好的Java代码,这个类加载器就负责加载你写好的那些类到内存里。

(4)自定义类加载器

最后一个就是自定义加载器,可以根据自己的需求加载你的类。

 

介绍完了类加载器,那么什么是双亲委派呢?JVM的类加载器是有亲子层级结构的,就是说启动类加载器是最上层的,扩展类加载器在第二层,第三层是应用程序类加载器,最后一层就是自定义类加载器。这个所谓的双亲委派,就是说加载类的时候不是自己先加载的,是先去父加载器里面去询问,是不是可以帮我加载,如果父加载器加载不了再由儿子来加载。

 

2.Tomcat中为什么不能使用双亲委派

说完上面的双亲委派,那么大家都应该很明白是怎么一回事了,那么为什么Tomcat,没有遵循双清委派呢?

一个Tomcat里面可能方好几个项目,一个项目里面就是一个war包,每一个项目使用的工具可能都不一样,对应的版本可能也不一样。这样如果我在tomcat里面部署两个项目,一serverA和serverB,这两个项目分别使用的事spring2.x和spring3.x,如果tomcat里面使用的是双亲委派,那么怎么让JVM通知支持spring2.x和spring3.x,那么就需要tomcat自己制定一个类加载的机制了。

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值