JAXB定制-WSDL和schemaLocation中的多个模式

问题描述 投票:7回答:3

我有一个WSDL,其中的“ types”元素中包含3个模式。模式不是在外部XSD中定义的,而是在类型元素中定义的。

我想在模式编号2中自定义元素并更改其名称以避免冲突。

所以在schemaLocation中该怎么做?尽管提出了问题,我还是有办法做到这一点:

 schemaLocation="../wsdl-files/mywsdl.wsdl#types?schema2">
     ...
     <jxb:bindings node="some xpath

但我不是发现它的人,而是我的一个不再与我合作的同事。即使我理解,是否有资源可以找到其解释?链接还是书?在某个地方,我还可以找到其他示例。

我的问题是schemaLocation值(../wsdl-files/mywsdl.wsdl#types?schema2)而不是xpath。我想知道在WSDL中引用架构的所有可能性。我需要有关此内容的文档。

非常感谢

wsdl jaxb
3个回答
3
投票

JAXB Ri v2.1添加了对[模式组件指示符] [1]的支持,从理论上讲,它使您可以象征性地引用模式组件,而不是按文件位置和xpath位置进行引用。原则上,这要好用得多,但我从来没有亲自使用过。

但是,我不确定这有多广泛支持。除了该博客条目外,几乎没有其他提及它。它确实提到它是所提议的JAXB 2.1规范的一部分,因此,如果通过该规范,则应该由包括Java6在内的每个JAXB 2.1实现来实现。但是,有可能它从未真正添加到规范中。


1
投票

存在类似的问题(具有相同名称的五个模式),并且以某种方式无法使SCD正常工作。我的解决方案是:

custombinding.xml:

<jxb:bindings version="2.1" 
    xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">

    <jxb:bindings schemaLocation="file:wsdlfile.wsdl" node="*/xs:schema[1]">
        <jxb:schemaBindings>
            <jxb:package  name="my.custom.package"/>
        </jxb:schemaBindings>
    </jxb:bindings>
</jxb:bindings>

蚂蚁构建文件中的xjc调用:

<target name="xjc_generate">
    <exec executable="xjc" >
      <arg value="-wsdl" />
      <arg value="${wsdl.base}/service/wsdlfile.wsdl" />
      <arg value="-d" />
      <arg value="${dir.src}" />
      <arg value="-b" />
      <arg value="${wsdl.base}/service/custombinding.xjb" />
    </exec>
</target>

0
投票

您需要这样指定wsdl中模式的位置-如果这是第二个模式。

例如:mywsdl.wsdl#types2如果是10号,则为mywsdl.wsdl#types10

希望它可以帮助某人。

  <jxb:bindings version="2.1" 
        xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
        xmlns:xs="http://www.w3.org/2001/XMLSchema"
        xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">

        <jxb:bindings schemaLocation="../wsdl-files/mywsdl.wsdl#types2" node="/xs:schema">
            <jxb:schemaBindings>
                <jxb:package  name="my.custom.package"/>
            </jxb:schemaBindings>
        </jxb:bindings>
    </jxb:bindings>
© www.soinside.com 2019 - 2024. All rights reserved.