相关和修复:#12088
在调用端点之前,将 JMX 端点的线程类加载器设置为最初用于加载上下文的类加载器。
前:
--- Class Loaders
getClass().getClassLoader(): java.net.URLClassLoader@4ac20dd2
currentThread().getContextClassLoader(): sun.misc.Launcher$AppClassLoader@18b4aac2
ClassUtils.getDefaultClassLoader(): sun.misc.Launcher$AppClassLoader@18b4aac2
---
后:
--- Class Loaders
getClass().getClassLoader(): java.net.URLClassLoader@4ac20dd2
currentThread().getContextClassLoader(): java.net.URLClassLoader@4ac20dd2
ClassUtils.getDefaultClassLoader(): java.net.URLClassLoader@4ac20dd2
---
测试代码(使用 start.spring.io 中的示例应用程序,包括网络和执行器):
@Component
@JmxEndpoint(id = "classloader")
public class JmxClassloaderEndpoint {
@WriteOperation
public void someOperation() {
System.out.println("--- Class Loaders");
System.out.println("getClass().getClassLoader(): " + getClass().getClassLoader());
System.out.println("currentThread().getContextClassLoader(): " + Thread.currentThread().getContextClassLoader());
System.out.println("ClassUtils.getDefaultClassLoader(): " + ClassUtils.getDefaultClassLoader());
System.out.println("---");
}
}