首页 >> 大全

Tomcat 违背双亲委派模式

2023-12-28 大全 33 作者:考证青年

违背双亲委派模式

【 类加载机制】:

如何打破双亲委派机制__违反双亲委派模型

双亲委派模型要求除了顶层的启动类加载器之外,其余的类加载器都应当由自己的父类加载器加载。

能加载的类都可以被 和使用,从而实现了公有类库的共用,而和 自己能加载的类则与对方相互隔离。

_违反双亲委派模型_如何打破双亲委派机制

可以使用加载到的类,但各个实例之间相互隔离。

而的加载范围仅仅是这个JSP文件所编译出来的那一个.Class文件,它出现的目的就是为了被丢弃:当Web容器检测到JSP文件被修改时,会替换掉目前的的实例,并通过再建立一个新的Jsp类加载器来实现JSP文件的功能。

【违背双亲委派】: 为了实现隔离性,没有遵守这个约定,每个加载自己的目录下的class文件,不会传递给父类加载器。例如:如果 的 想加载 中的类,该怎么办?我们可以使用线程上下文类加载器实现,使用线程上下文加载器,可以让父类加载器请求子类加载器去完成类加载的动作。

【违背双亲委派三个方面】:(1)向前兼容;(2)加载SPI接口实现类;(3)热部署

【类加载过程】:

如何打破双亲委派机制__违反双亲委派模型

的类加载机制是违反了双亲委托原则的,对于一些未加载的非基础类(,等),各个web应用自己的类加载器()会优先加载,加载不到时再交给走双亲委托。具体的加载逻辑位于e.()方法中,这里以文字描述加载一个类过程:

先在本地缓存中查找是否已经加载过该类(对于一些已经加载了的类,会被缓存在这个数据结构中),如果已经加载即返回,否则 继续下一步。让系统类加载器()尝试加载该类,主要是为了防止一些基础类会被web中的类覆盖,如果加载到即返回,返回继续。前两步均没加载到目标类,那么web应用的类加载器将自行加载,如果加载到则返回,否则继续下一步。最后还是加载不到的话,则委托父类加载器( )去加载。

第3第4两个步骤的顺序已经违反了双亲委托机制,除了之外,JDBC,JNDI,.().r();等很多地方都一样是违反了双亲委托。

【参考文献】:类加载器破坏双亲委派

学习步骤,附带打破双亲委派模型企业应用实战

深入理解 (四) 类加载器之为何违背双亲委派模型

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了