我正在尝试让我的wsdl位置在我生成的客户端中不再是静态的(使用jaxws-maven-plugin),但我没有取得很多成功。
我发现的是以下内容..
我的插件(放置在pom构建的插件中):
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxws-maven-plugin</artifactId>
<executions>
<execution>
<id>ecad-ws</id>
<phase>generate-sources</phase>
<goals>
<goal>wsimport</goal>
</goals>
<configuration>
<sourceDestDir>${basedir}/target/generated-sources</sourceDestDir>
<keep>true</keep>
<verbose>true</verbose>
<extension>true</extension>
<wsdlDirectory>src/main/resources</wsdlDirectory>
<wsdlFiles>
<wsdlFile>CBS.wsdl</wsdlFile>
</wsdlFiles>
<wsdlLocation>http://localhost/wsdl/msw/cbs?wsdl</wsdlLocation>
<catalog>
${basedir}/src/main/resources/META-INF/jax-ws-catalog.xml
</catalog>
</configuration>
</execution>
</executions>
</plugin>
和一个jax-ws-catalog文件(放在src / main / resources / META-INF中):
<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog" prefer="system">
<system
systemId="http://localhost/wsdl/msw/cbs?wsdl"
uri="../CBS.wsdl" />
</catalog>
CBS.wsdl位于src / main / resouces中。据我了解我的研究,上面的代码将生成的客户端中的URL更改为http://localhost/wsdl/msw/cbs?wsdl(这是有效的),然后,当调用客户端时,它会查找目录并将上面的URL与../匹配CBS.wsdl。最后一部分不起作用,因为我得到以下异常:
Caused by: org.apache.cxf.service.factory.ServiceConstructionException: Failed to create service.
at org.apache.cxf.wsdl11.WSDLServiceFactory.<init>(WSDLServiceFactory.java:94)
at org.apache.cxf.jaxws.ServiceImpl.initializePorts(ServiceImpl.java:204)
at org.apache.cxf.jaxws.ServiceImpl.<init>(ServiceImpl.java:148)
... 118 more
Caused by: javax.wsdl.WSDLException: WSDLException: faultCode=PARSER_ERROR: Problem parsing 'http://localhost/wsdl/msw/cbs?wsdl'.: java.net.ConnectException: Connection refused: connect
at com.ibm.wsdl.xml.WSDLReaderImpl.getDocument(Unknown Source)
at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source)
at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source)
at org.apache.cxf.wsdl11.WSDLManagerImpl.loadDefinition(WSDLManagerImpl.java:244)
at org.apache.cxf.wsdl11.WSDLManagerImpl.getDefinition(WSDLManagerImpl.java:191)
at org.apache.cxf.wsdl11.WSDLServiceFactory.<init>(WSDLServiceFactory.java:92)
... 120 more
Caused by: java.net.ConnectException: Connection refused: connect
我真的找不到另一种解决方案。如果我没有更改生成的客户端中的wsdl位置,我总是得到类似“无法访问WSDL:file:XXXXX”(这是完全正常的)
我正在使用jdk 7 btw ..
答案 0 :(得分:0)
这个答案晚了大约 6 年,但是...
我在寻找如何在我自己的存储库中设置目录文件时徘徊在这个问题上 .. 2021 年 .. 使用 Java 11。我设法让它为我的存储库工作,并查看上面的配置对于我的,我唯一能说的是您可能需要将 ${basedir}
添加到 <wsdlDirectory>
部分。
...
<wsdlDirectory>${basedir}src/main/resources</wsdlDirectory>
...
我将把这个留给下一个疲倦的开发人员(像我一样),他们必须在 REST 时代实现 wsdl 连接。