`

改变线程上下文的类加载器ClassLoader

阅读更多

/**
	 * Override the thread context ClassLoader with the environment's bean ClassLoader
	 * if necessary, i.e. if the bean ClassLoader is not equivalent to the thread
	 * context ClassLoader already.
	 * @param classLoaderToUse the actual ClassLoader to use for the thread context
	 * @return the original thread context ClassLoader, or <code>null</code> if not overridden
	 */
	public static ClassLoader overrideThreadContextClassLoader(ClassLoader classLoaderToUse) {
		Thread currentThread = Thread.currentThread();
		ClassLoader threadContextClassLoader = currentThread.getContextClassLoader();
		if (classLoaderToUse != null && !classLoaderToUse.equals(threadContextClassLoader)) {
			currentThread.setContextClassLoader(classLoaderToUse);
			return threadContextClassLoader;
		}
		else {
			return null;
		}
	}
 
分享到:
评论

相关推荐

    走出ClassLoader误区

    在Java中,有多种类加载器,包括系统类加载器、当前类加载器和线程上下文类加载器。系统类加载器,通常由`ClassLoader.getSystemClassLoader()`获取,主要负责加载启动应用时由classpath指定的类。由于它与JVM启动...

    浅析ClassLoader

    2. 应用场景:Spring框架中,线程上下文类加载器用于加载Bean定义等配置信息,实现灵活的依赖注入。 四、案例分析 文件`ContextClassLoaderTest`和`ContextClassLoaderTest2`可能是用来测试上下文类加载器的示例...

    classloader-playground, 一个简单的java依赖隔离容器类.zip

    此外,"classloader-playground"还可能包含对线程上下文类加载器(Thread Context ClassLoader)的理解和使用。线程上下文类加载器主要用于解决应用程序类加载问题,尤其是在服务提供者接口(SPI)中,允许用户...

    Java类加载器学习总结.pdf

    除了这些基础的类加载器,Java还引入了**线程上下文类加载器(ContextClassLoader)**。每个线程都有一个与之关联的类加载器,可以通过`Thread.getContextClassLoader()`获取。线程上下文类加载器用于在多线程环境下...

    深入探讨 Java 类加载器

    线程上下文类加载器(Thread Context ClassLoader)是一个特殊的角色,它允许在多线程环境中控制类的加载。每个线程都有一个与之关联的类加载器,可以通过Thread.currentThread().getContextClassLoader()获取。这在...

    java类加载器和核心机制.pdf

    线程上下文类加载器则允许在特定线程上下文中改变类加载器,以便加载特定的类。 服务器类加载原理则涉及到服务器如何管理类的加载以及OSGI(Open Service Gateway Initiative)的技术介绍。OSGI提供了一个运行时...

    Java类加载原理解析

    线程上下文类加载器(Thread Context ClassLoader)则是在特定线程中使用的类加载器,主要用于解决一些应用服务器中类加载的复杂问题,如J2EE容器中的类加载需求。 总的来说,理解Java类加载机制对于排查类加载错误...

    Java类加载原理解析文档

    本文将详细解析Java类加载原理,分为三篇文章进行阐述,分别是:Java类加载原理解析、插件环境下类加载原理解析和线程上下文类加载器。 首先,我们来了解Java虚拟机(JVM)的类加载器结构。JVM预定义了三种主要的类...

    Understanding the Java ClassLoader.pdf

    然而,在多线程环境中,还需要注意线程上下文类加载器的正确设置,以避免类加载异常。 ### 适应Java 2的更新 为了使自定义类加载器兼容Java 2,开发者需要确保遵循双亲委派模型。这意味着在自定义类加载器中,应该...

    Java类加载机制学习1

    线程上下文类加载器(Thread Context ClassLoader)是Java提供的一种机制,允许线程在运行时指定一个类加载器,确保类由同一个类加载器加载。这对于应用程序服务器和插件系统尤其有用,因为它允许组件使用自己的类...

    探索JVM底层奥秘ClassLoader源码分析与案例讲解

    7. **线程上下文类加载器**:在多线程环境下,每个线程都关联有一个线程上下文类加载器,用于服务线程特有的类加载需求。 8. **类的卸载**:Java中类一旦被加载就很难被卸载,因为垃圾回收器不会回收Class对象,...

    java classloader classpath 张孝祥

    5. `Thread.currentThread().getContextClassLoader().getResource("")`:获取当前线程上下文类加载器的根路径,如`file:/D/workspace/jbpmtest3/bin/`。 6. `ServletActionContext.getServletContext().getRealPath...

    Java类加载.pdf

    当类的实例化需要时,JVM会遵循双亲委派模型进行类加载:首先,尝试由当前线程的上下文类加载器加载;如果找不到,再由其父类加载器加载,直到到达Bootstrap Classloader。这种模型保证了核心类库的唯一性,例如`...

    深入理解Java类加载.docx

    此外,还可以自定义类加载器,比如线程上下文类加载器,用于满足特定加载需求。 在多线程环境下,类的初始化是线程安全的。当多个线程尝试初始化同一类时,只有一个线程会执行()方法,其他线程会被阻塞。这确保了类...

Global site tag (gtag.js) - Google Analytics