使用Thread的ContextClassLoader

时间:2013-08-07 16:28:30

标签: java multithreading classloader

在下面的行中:

这是获取类加载器的两种方法

  

1)Thread.currentThread()。getContextClassLoader();

     

2)getClass()。getClassLoader();

有人请解释一下这两者之间的区别。

另外我的第二个问题是我们何时使用Thread.currentThread()。getContextClassLoader()

我已经在StackOverflow上提到了一些相同的帖子,但没有找到根本的答案。

我已经看到了你提出的问题的答案。

Difference between thread's context class loader and normal classloader

线程上下文类加载器为类加载委派方案提供了一个后门。  以JNDI为例:它的内容由rt.jar中的引导类实现(从J2SE 1.3开始),但这些核心JNDI  类可以加载由独立供应商实现的JNDI提供程序  可能部署在应用程序的-classpath中。这种情况  调用父类加载器(在本例中为原始类加载器)  加载一个类子类加载器可见的类(系统一,  例如)。正常的J2SE委派不起作用,解决方法  是使核心JNDI类使用线程上下文加载器,因此  通过类中的类加载器层次结构有效地“隧道化”  与正确授权相反的方向。

  

因为建议解决方法是制作核心JNDI   类使用线程上下文加载器,我不明白这是如何帮助的   在这种情况下。

     

我们希望使用parent加载实现供应商类   classloader但它们对父类加载器不可见。怎么可以   我们使用parent加载它们,即使我们设置了这个父类加载器   线程的上下文类加载器。

请建议

0 个答案:

没有答案