使用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(示例

RISC-V架构下 FPU Context 的动态保存和恢复

context switch

RISC-V架构下 FPU Context 的动态保存和恢复