在哪里我们将使用Thread.getContextClassLoader()和ClassLoader.getSystemClassLoader()可以使用它的instand?

时间:2012-03-15 14:32:10

标签: java classloader

经过谷歌后我确实找不到一个如何使用Thread.getContextClassLoader()的例子,

也许这个问题重复如下 Difference between thread's context class loader and normal classloader

我的问题回顾如下:  我知道使用Thread.getContextLoader的场景,/ lib / art.jar中包含的Becasue JNDI核心类  但是那些JNDI Core(可能它们只是一些接口)没有bean实现,在其他工作中如果你想使用JNDI的函数你必须提供  一个JNDI的实现,然后我们将这些实现(可能是jar)放入系统类路径中, 但是现在核心JDNI类是由Bootstrap加载的,那些核心类必须使用它的实现类, 好吧,我们为他提供一个Thread.getContextClassLoader()(如果你没有任何默认的操作是ClassLoader.getSystemClassLoader()),它现在可以加载它们, 我只是假设为什么核心JNDI类使用这种方式直接获取systemClassLoader'ClassLoader.getSystemClassLoader()'?

也许我解释的一些观点不正确..

  

&LT 1为卤素;但我只是想了解我们是否可以使用   Thread.getClassLoader()的ClassLoader.getSystemClassLoader()实例   加载系统类路径类或资源在哪些类中   由bootstrap类加载器加载?

1 个答案:

答案 0 :(得分:1)

Thread.getContextClassLoader()不是从头开始引入java的。它在多类加载器环境中非常有用,对于在容器中运行的Java EE应用程序来说很快就会为每个企业应用程序分配私有类加载器。因此,可以使用上下文类加载器检索与此应用程序打包的资源。

它也用于公共系统的自我配置,如commons logging和log4j。