关于线程上下文类加载器问题

xiang_翔 2015-07-07 10:43:36
下面是我到处看到的使用线程上下文的例子
“这通常发生在JVM核心代码必须动态加载由应用程序动态提供的资源时。拿JNDI为例,它的核心是由JRE核心类(rt.jar)实现的。但这些核心JNDI类必须能加载由第三方厂商提供的JNDI实现。这种情况下调用父类加载器(原初类加载器)来加载只有其子类加载器可见的类,这种代理机制就会失效。解决办法就是让核心JNDI类使用线程上下文类加载器,从而有效的打通类加载器层次结构,逆着代理机制的方向使用类加载器。”

我的理解:JDNI直接使用了最高层的加载器去加载类,导致必须经过子类加载器加载的类无法加载。

疑问:为什么要用最高层加载器去加载,我使用最底层加载器配合双亲委派模型难道不能加载到吗?

问题:既然遵循双亲加载模型,我可以在任何地方设定类加载器就是最低层的系统加载器,使用这样代理模式可以也让所有父类加载也去尝试寻找这些类。何必要使用所谓线程上下文呢?
...全文
273 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

50,329

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧