如何使从WSDL生成的Java类实现接口 [英] How to have Java classes generated from WSDL implement an interface
问题描述
我们的主要wsdl具有一系列wsdl导入.每个子wsdl都导入common.xsd并定义特定操作的请求和答复对象.
Our main wsdl has a series of wsdl imports. Each sub-wsdl imports common.xsd and defines the request and reply objects for a particular operation.
我希望每个sub-wsdl文档中的请求对象都实现一个公共接口.
I want the request objects in each of the sub-wsdl documents to implement a common interface.
首先,我尝试使用xsd:extension并将公共元素提取到基类中.这可行,但是更改了公开显示的wsdl,而我不想这样做.它已经稳定了一段时间了.此更改对于Web服务的使用者应该是完全透明的.
First, I tried using xsd:extension and extracted the common elements to a base class. This works, but changes the publicly exposed wsdl and I don't want to do that. It has been stable and unchanged for a while now. This change should be completely transparent to consumers of the web services.
我发现了这一点: http://confluence.highsource.org/display/J2B/Inheritance+plugin
所以我应该可以使用 < inheritance:implements> com.acme.foo.MyInterface</inheritance:implements>
So I should be able to use <inheritance:implements>com.acme.foo.MyInterface </inheritance:implements>
但这需要运行带有"-Xinheritance"的jaxb,我似乎无法弄清楚如何在我的Maven构建中做到这一点.我正在使用org.apache.cxf:cxf-codegen-plugin:wsdl2java从wsdl生成Java源代码.
But this requires requires running jaxb w/ "-Xinheritance" and I can't seem to figure out how to do that in my maven build. I'm using org.apache.cxf:cxf-codegen-plugin:wsdl2java to generate Java source from wsdl.
我是否需要将wsdl中的模式提取到xsds并直接使用JAXB生成Java源代码?
Do I need to extract the schema(s) from the wsdl to xsds and generate the Java sources directly with JAXB?
还有其他选择吗?
谢谢.
推荐答案
检查此链接.您需要执行以下操作:
Check this link. You'll need to do something like:
<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>
这篇关于如何使从WSDL生成的Java类实现接口的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!