java - 如何让从 WSDL 生成的 Java 类实现接口(interface)

标签 java wsdl jaxb cxf xjc

我们的主要 wsdl 有一系列的 wsdl 导入。每个子 wsdl 导入 common.xsd 并定义特定操作的请求和回复对象。

我希望每个子wsdl文档中的请求对象都实现一个通用接口(interface)。

首先,我尝试使用 xsd:extension 并将公共(public)元素提取到基类中。这可行,但会更改公开暴露的 wsdl,我不想这样做。一段时间以来,它一直保持稳定和不变。此更改对 Web 服务的消费者应该是完全透明的。

我发现了这个: http://confluence.highsource.org/display/J2B/Inheritance+plugin

所以我应该可以使用 <继承:实现>com.acme.foo.MyInterface

但这需要运行带有“-Xinheritance”的 jaxb,我似乎无法弄清楚如何在我的 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>

关于java - 如何让从 WSDL 生成的 Java 类实现接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7652338/

相关文章:

java - 将 XSLT 与 JAXB 结合使用

java - 在 Scala 中实现多级 Java 接口(interface)

java - 使用 java.util.concurrent.Executor 阻止 tomcat 停止

java - 使用默认媒体播放器播放流视频

java - 正则表达式匹配java中的变量声明

java - 从 wsdl 生成 JAX-WS 客户端抽象接口(interface)

java - Jaxb 多个 xml 解码

web-services - 使用 F# WsdlService 类型提供程序编译错误

调用 WSDL 提供的函数时,PHP 5 SOAP 客户端返回 NULL

java - "generic"用例的 JAXB 性能不佳 - 更好的设计模式?