关于线程上下文类加载器问题
下面是我到处看到的使用线程上下文的例子
“这通常发生在JVM核心代码必须动态加载由应用程序动态提供的资源时。拿JNDI为例,它的核心是由JRE核心类(rt.jar)实现的。但这些核心JNDI类必须能加载由第三方厂商提供的JNDI实现。这种情况下调用父类加载器(原初类加载器)来加载只有其子类加载器可见的类,这种代理机制就会失效。解决办法就是让核心JNDI类使用线程上下文类加载器,从而有效的打通类加载器层次结构,逆着代理机制的方向使用类加载器。”
我的理解:JDNI直接使用了最高层的加载器去加载类,导致必须经过子类加载器加载的类无法加载。
疑问:为什么要用最高层加载器去加载,我使用最底层加载器配合双亲委派模型难道不能加载到吗?
问题:既然遵循双亲加载模型,我可以在任何地方设定类加载器就是最低层的系统加载器,使用这样代理模式可以也让所有父类加载也去尝试寻找这些类。何必要使用所谓线程上下文呢?