我正在使用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 的一部分包含通过 jboss 服务器目录一直到 wsdl 文件的路径,并包括 WEB-INF 目录。
我的 .classpath 文件设置不正确还是我遗漏了其他内容?
如果 WSDL 位置不正确,它总是会抛出 ClassCast 异常,如下所示:
java.lang.ClassCastException:javax.xml.ws.Service 处的 org.apache.cxf.jaxws.ServiceImpl。(Service.java:81)
最佳答案
I have my wsdls located in
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
目录下。
关于Webservices(CXF) 和 Jboss 的 Java 类路径问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2545499/