1

我正在使用 CXF(它从我的 wsdl 在我的 pom.xml 中自动生成我的 web 服务)和 JBoss(eclipse ide),我在从我的 web 应用程序访问 web 服务时遇到了一些问题。我找到了这个资源:http : //blog.progs.be/?p=92 但我很难使用 WSDL_LOCATION = cl.getResource("my/progam/pack/wsdl/myService.wsdl"); 在我的代码中正常工作。

我的 wsdls 位于 src/main/wsdl 中,并在 .classpath 文件中添加了以下行: classpathentry kind="src" path="src/main/wsdl"

我还创建了文件夹 my,program,pack,wsdl 并将我的 wsdls 放到该位置,因此可以访问它。

但是,无论如何,classloader.getResource 调用总是返回 null。

当我指定 getResource("/wsdl/myService.wsdl") 时,它不会返回 null,但我相信它会查看完整的文件路径,而不是我需要的(考虑到 URL 的一部分包含所有 wsdl 文件的路径通过 jboss 服务器目录并包括 WEB-INF 目录。

我的 .classpath 文件设置不正确还是我遗漏了其他内容?

如果 WSDL 位置不正确,它总是会抛出一个 ClassCast 异常,如下所示:

java.lang.ClassCastException: org.apache.cxf.jaxws.ServiceImpl at javax.xml.ws.Service.(Service.java:81)

4

1 回答 1

1

我的 wsdls 位于src/main/wsdl(...)

为了在类路径中获取这些文件,您需要在 POM 中将目录声明为资源:

<project>
  ...
  <build>
    <resources>
      <resource>
        <directory>src/main/resources</directory>
      </resource>
      <resource>
        <directory>src/main/wsdl</directory>
      </resource>
    </resources>
    ...
  </build>
</project>

现在您的 WSDL 应该在该classes目录下结束。

于 2010-03-30T13:39:35.827 回答