Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用线程上下文类加载器从类路径读取WSDL_Java_Multithreading_Web Services_Soap_Wsdl - Fatal编程技术网

Java 使用线程上下文类加载器从类路径读取WSDL

Java 使用线程上下文类加载器从类路径读取WSDL,java,multithreading,web-services,soap,wsdl,Java,Multithreading,Web Services,Soap,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 WS

我使用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);
  }

当我在TomcatTy内部运行war时,第一种方法在控制台上打印一个
null
,而第二种控制台实际上是正确打印的。我只是想知道为什么会这样,以及正确的方法是什么。

我的期望是,使用WSClient静态引用的第一个引用使用系统类加载器,而使用当前线程的第二个引用使用tomcat的Web应用程序类加载器


阅读此链接

我明白了,我唯一不确定的是它为什么会回来null@station因为SystemClassLoader比Webapplication classloader高一级,对WAR文件内容没有可见性。@station有一个classloader树的图表,而不是公认的答案。非常好。