【问题标题】:Single file for multiple WSDL binding多个 WSDL 绑定的单个文件
【发布时间】:2016-08-11 14:18:33
【问题描述】:

我目前正在使用 Apache CXF 的 cxf-codegen-plugin 开发 SOAP webservices 客户端。由于我有多个 WSDL,我需要将它绑定到我的 java 项目中的不同包。

我的问题是,是否可以为多个 WSDL 文件定义 1 个单个绑定文件?

下面是我的插件配置

<plugin>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-codegen-plugin</artifactId>
    <version>${cxf.version}</version>
    <executions>
        <execution>
            <id>generate-sources</id>
            <phase>generate-sources</phase>
            <configuration>
                <defaultOptions>
                    <bindingFiles>
                        <bindingFile>src/main/resources/wsdl/bindings.xjb</bindingFile>
                    </bindingFiles>
                </defaultOptions>
                <sourceRoot>${basedir}/src/main/java</sourceRoot>
                <wsdlRoot>src/main/resources/wsdl</wsdlRoot>
                <includes>
                    <include>*.wsdl</include>
                </includes>
            </configuration>
            <goals>
                <goal>wsdl2java</goal>
            </goals>
        </execution>
    </executions>
</plugin>

我正在努力实现这样的目标,但无济于事

<jaxws:bindings
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
    xmlns:jaxws="http://java.sun.com/xml/ns/jaxws" 
    xmlns="http://java.sun.com/xml/ns/jaxws">

    <jaxws:bindings wsdlLocation="serviceA.wsdl" >
        <jaxws:package name="org.ws.serviceA"/>
    </jaxws:bindings>

    <jaxws:bindings wsdlLocation="serviceB.wsdl" >
        <jaxws:package name="org.ws.serviceB"/>
    </jaxws:bindings>

</jaxws:bindings>

【问题讨论】:

    标签: java web-services soap wsdl cxf


    【解决方案1】:

    事实证明,这确实是不可能的,并且在本站明确说明

    https://jax-ws.java.net/nonav/2.1.2/docs/customizations.html

    1.1.1 根绑定元素

    jaxws:bindings 声明显示为所有其他声明的根 有约束力的声明。这个顶级 jaxws:bindings 元素必须 将 WSDL 文件的位置指定为值中的 URI wsdlLocation 属性。

    但是它没有在子元素中指定任何关于 wsdlLocation 的内容。这个网站做http://itdoc.hitachi.co.jp/manuals/3020/30203Y2310e/EY230286.HTM#ID00669

    非root jaxws:bindings > wsdlLocation > 属性不能 指定的。即使指定了属性,也会被忽略。

    希望这可以在未来得到改进,因为 JAXB 已经可以像这样在一个文件中绑定多个 schemaLocation

    <jxb:bindings version="1.0" xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
        xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    
        <jxb:bindings schemaLocation="schema1.xsd" node="//xsd:schema">
            <jxb:schemaBindings>
                <jxb:package name="org.package1" />
            </jxb:schemaBindings>
        </jxb:bindings>
    
    
        <jxb:bindings schemaLocation="schema2.xsd" node="//xsd:schema">
            <jxb:schemaBindings>
                <jxb:package name="org.package2" />
            </jxb:schemaBindings>
        </jxb:bindings>
    </jxb:bindings>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多