【问题标题】:wsdl with duplicate type definitions on the same target namespacewsdl 在同一目标命名空间上具有重复的类型定义
【发布时间】:2014-09-14 15:01:06
【问题描述】:

我在集成第三方网络服务时遇到了问题。 我收到以下错误: [错误] 无法在项目 pcm_portal 上执行目标 org.apache.cxf:cxf-codegen-plugin:2.4.2:wsdl2java (generate-sources):由 JAXB 抛出:“string15”已在模式的第 305 行第 2 列定义... -> [帮助 1]

其实我理解错误,这个文件包含同一个目标命名空间的多个模式,我们可以找到两个模式中定义的相同 simpleType (string15)。

是这样的:

<definitions xmlns="http://schemas.xmlsoap.org/wsdl/"
    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
    xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:tns="http://siebel.com/CustomUI" ...>
    <types>
        <!-- ... -->
        <xsd:schema elementFormDefault="qualified"
            attributeFormDefault="unqualified"
            targetNamespace="http://myNs/"
            xmlns:xsdLocal3="http://myNs/">
            <!-- ... -->
            <xsd:simpleType name="string15">
                <xsd:restriction base="xsd:string">
                    <xsd:maxLength value="15"></xsd:maxLength>
                </xsd:restriction>
            </xsd:simpleType>
            <!-- ... -->
        </xsd:schema>
        <!-- ... -->

        <xsd:schema elementFormDefault="qualified"
            attributeFormDefault="unqualified"
            targetNamespace="http://myNs/"
            xmlns:xsdLocal3="http://myNs/">
            <!-- ... -->
            <xsd:simpleType name="string15">
                <xsd:restriction base="xsd:string">
                    <xsd:maxLength value="15"></xsd:maxLength>
                </xsd:restriction>
            </xsd:simpleType>
            <!-- ... -->
        </xsd:schema>
        <!-- ... -->
    </types>
</definitions>

我的问题是

1) 有没有办法让wsdl2java来处理这样的文件?

今天我通过 maven cxf-codegen-plugin 使用它,它是这样配置的:

<defaultOptions>
    <extraargs>
        <extraarg>-exsh</extraarg>
        <extraarg>true</extraarg>
        <extraarg>-xjc-npa</extraarg>
    </extraargs>
</defaultOptions>

2) 如果没有人知道一个参考文档,因为给我 wsdl 的团队说没有问题(实际上 SoapUI 对这个 WSDL 没有任何问题),所以有人知道这可能是我的论据吗?

【问题讨论】:

  • 感谢您的回答,这实际上非常接近我的问题。好吧,我不确定解决方法是否适用,因为我的重复项位于同一个 wsdl 文件中(希望未修改/未拆分)。
  • 你是怎么解决这个问题的?面临同样的问题。
  • 您好,很遗憾没有真正的解决方案。 wsdl 确实无效,不能按原样处理。我不得不修改它以删除重复的条目。

标签: java web-services maven cxf wsdl2java


【解决方案1】:

过去我也遇到过同样的问题。

我从“cxf-codegen-plugin”中排除了模式的生成

例如

<extraarg>-nexclude</extraarg>
<extraarg>http://myNs/</extraarg>

我将架构提取到另一个文件 (XSD) 中,并使用“maven-plugin-jaxb2”来生成它们。

显然你不能用相同的命名空间声明两个相同的对象,所以你必须合并具有相同命名空间的模式。

我希望这个解决方案可以帮助您解决问题。

【讨论】:

    猜你喜欢
    • 2016-01-04
    • 1970-01-01
    • 2014-10-06
    • 1970-01-01
    • 2011-12-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-31
    • 2012-01-25
    相关资源
    最近更新 更多