使用Thread Context ClassLoader从类路径读取WSDL
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Thread Context ClassLoader从类路径读取WSDL相关的知识,希望对你有一定的参考价值。
我是一个Web服务,我将我的WSDL放在WEB-INF/classes
目录中的类路径中。我在tomcat服务器上运行以下代码。
第一种方法
static {
URL WSDL_LOC=WSClient.class.getClass().getClassLoader().getResource("Data.wsdl");
System.out.println("Location here is : " + WSDL_LOC);
}
第二种方法
static {
URL WSDL_LOC = Thread.currentThread().getContextClassLoader().getResource("Data.wsdl");
System.out.println("Location here is : " + WSDL_LOC);
}
当我在tomcat tyhe中运行我的战争时,第一种方法在控制台上打印null
,而第二个控制台实际上正确打印它。我只是想知道为什么会这样,以及这样做的正确方法是什么。
答案
我的期望是使用静态引用WSClient的第一个引用使用系统类加载器,而使用当前线程的第二个引用使用tomcat的Web应用程序类加载器。
阅读此链接Difference between thread's context class loader and normal classloader
以上是关于使用Thread Context ClassLoader从类路径读取WSDL的主要内容,如果未能解决你的问题,请参考以下文章
线程上下文切换(Thread Context Switch)
Unity Android 错误 call to OpenGL ES API with no current context (logged once per thread) 解决办法
ensure that AopContext.currentProxy() is invoked in the same thread as the AOP invocation context(示例