详情:
maven pom内容示例:
<plugin>
<groupId>org.jvnet.jax-ws-commons</groupId>
<artifactId>jaxws-maven-plugin</artifactId>
<version>2.3</version>
<executions>
<execution>
<id>wsdla-exec-1</id>
<goals>
<goal>wsimport</goal>
</goals>
<configuration>
<packageName>com.yourcompany.package</packageName>
<target>2.1</target>
<verbose>true</verbose>
<!-- Fix naming resolution due to ChangeOrderResponse duplicate stanza -->
<args>
<arg>-B-XautoNameResolution</arg>
</args>
<wsdlDirectory>src/main/resources</wsdlDirectory>
<wsdlFiles>
<wsdlFiles>service1.wsdl</wsdlFiles>
</wsdlFiles>
<wsdlLocation>/*</wsdlLocation>
<sourceDestDir>src/main/java</sourceDestDir>
</configuration>
</execution>
<execution>
<id>wsdla-exec-2</id>
<goals>
<goal>wsimport</goal>
</goals>
<configuration>
<packageName>com.yourcompany.package</packageName>
<target>2.1</target>
<verbose>true</verbose>
<!-- Fix naming resolution due to ChangeOrderResponse duplicate stanza -->
<args>
<arg>-B-XautoNameResolution</arg>
</args>
<wsdlDirectory>src/main/resources</wsdlDirectory>
<wsdlFiles>
<wsdlFile>service2.wsdl</wsdlFile>
</wsdlFiles>
<wsdlLocation>/*</wsdlLocation>
<sourceDestDir>src/main/java</sourceDestDir>
</configuration>
</execution>
</executions>
</plugin>
说明
我已经在wule中生成了很长一段时间内来自wsdl的客户端代码,而且它总是非常直接且富有成效但现在我遇到了一个障碍,我可能会在这里找到正确方向的指针。 / p>
基本上,在wsdl生成的代码中,有一个与容器类同名的嵌套类,这会在我正在使用这个wsdl的项目中产生红色。
我所知道的:
我可以手动更改代码和中提琴,或者更好的是我可以更改wsimport以使用静态文件(从url复制 - 包括所有xsd)并更改这些文件。然而两者似乎都错了!
有没有办法可以操纵代码生成过程,还是应该让供应商进行更改?你有什么想法?
非常感谢,非常感谢任何意见。
答案 0 :(得分:0)
答案在于,供应商实际上希望消费者使用xmlbeans进行绑定,而不是根据当前的jax-ws标准使用jaxb。因此,为了从wsdl创建客户端代码,我能够执行以下任一操作。
在Windows上(如果你有工具):
md YourServiceFolderName
WSDL2java -uri YourService.wsdl -ss -sd -ssi -g -d xmlbeans -o YourServiceFolderName
使用Maven插件,在你的“插件”标签下(一定要整理你需要的依赖项 - 这里没有给出):
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-codegen-plugin</artifactId>
<version>2.7.8</version>
<executions>
<execution>
<id>generate-sources</id>
<phase>generate-sources</phase>
<configuration>
<wsdlOptions>
<wsdlOption>
<wsdl>YourService?wsdl</wsdl>
<extraargs>
<extraarg>-databinding</extraarg>
<extraarg>xmlbeans</extraarg>
</extraargs>
</wsdlOption>
</configuration>
<goals>
<goal>wsdl2java</goal>
</goals>
</execution>
</executions>
</plugin>
这应该为您提供服务消费所需的所有java文物。希望这有助于某人。