如何使从WSDL生成的Java类实现接口 [英] How to have Java classes generated from WSDL implement an interface

查看:65
本文介绍了如何使从WSDL生成的Java类实现接口的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们的主要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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆