如何让从WSDL生成的Java类实现接口
问题描述:
我们的主要wsdl具有一系列wsdl导入。每个子wsdl导入common.xsd并为特定操作定义请求和回复对象。如何让从WSDL生成的Java类实现接口
我想让每个子wsdl文档中的请求对象实现一个通用接口。
首先,我尝试使用xsd:extension并将常用元素提取到基类中。这有效,但改变了公开的wsdl,我不想这样做。一段时间以来它一直保持稳定和不变。对于Web服务的消费者来说,这种改变应该是完全透明的。
我发现这一点: http://confluence.highsource.org/display/J2B/Inheritance+plugin
所以我应该能够使用 <继承:工具> com.acme.foo.MyInterface < /继承:工具>
但这需要需要运行JAXB W /“-Xinheritance”,我似乎无法弄清楚如何在我的Maven构建中做到这一点。我正在使用org.apache.cxf:cxf-codegen-plugin:wsdl2java从wsdl生成Java源代码。
我是否需要将模式从wsdl提取到xsds并直接使用JAXB生成Java源代码?
还有其他的选择吗?
谢谢。
答
检查this link。你需要做的是这样:
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-codegen-plugin</artifactId>
<executions>
<execution>
<id>generate-sources</id>
<phase>generate-sources</phase>
<goals>
<goal>wsdl2java</goal>
</goals>
</execution>
</executions>
<configuration>
<wsdlOptions>
<wsdlOption>
<wsdl>${basedir}/src/main/wsdl/CustomerService.wsdl</wsdl>
<bindingFiles>
<bindingFile>${basedir}/src/main/wsdl/binding.xml</bindingFile>
<bindingFile>${basedir}/src/main/wsdl/binding.xjb</bindingFile>
</bindingFiles>
<extraargs>
<extraarg>-xjc-Xinheritance</extraarg>
</extraargs>
</wsdlOption>
</wsdlOptions>
</configuration>
<dependencies>
<dependency>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-basics</artifactId>
<version><!-- version --></version>
</dependency>
</dependencies>
</plugin>
我找到'CXF-CODEGEN-plugin'生成从WSDL web服务非常有用,而是为了从生成模式的POJO,我更喜欢使用'CXF-xjc-插件“,可以像这样使用”继承插件“:https://gist.github.com/pulkitsinghal/8163296 – pulkitsinghal