Дублирующиеся имена элементов, несколько схем с одинаковыми NS внутри WSDL, maven, cxf-codegen-plugin

У меня очень странный WSDL. Несколько схем с одинаковым пространством имен, но с разными префиксами. В результате - дублируется имя элемента:

[ERROR] C:\dev\WF.WSDL [4894:2]: 'ClientInfoRequest' is already defined org.xml.sax.SAXParseExceptionpublicId: file:/C:/dev/WF.WSDL; systemId: file:/C:/dev/WF.WSDL; lineNumber: 4894; columnNumber: 2; 'ClientInfoRequest' is already defined

WSDL выглядит так, оставлено только самое необходимое:

<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/"
             xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
             targetNamespace="http://myns.com/CUI"
             xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
             xmlns:xsd="http://www.w3.org/2001/XMLSchema"
             xmlns:tns="http://myns.com/CUI">
    <types>
        <xsd:schema elementFormDefault="qualified"
                    attributeFormDefault="unqualified"
                    targetNamespace="http://myns.com/GF"
                    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                    xmlns:xsdMy27="http://myns.com/GF">

            <xsd:element name="ClientInfoRequest" type="xsdMy27:ClientInfoRequest"/>
            .
            .
            .
            .
            .
            .
        </xsd:schema>

        <xsd:schema elementFormDefault="qualified"
                    xmlns:xsdMy25="http://myns.com/GF"
                    attributeFormDefault="unqualified"
                    targetNamespace="http://myns.com/GF"
                    xmlns:xsd="http://www.w3.org/2001/XMLSchema">

            <xsd:element name="ClientInfoRequest" type="xsdMy25:ClientInfoRequest"/>
            .
            .
            .
            .
            .
        </xsd:schema>
    </types>

    <message ...
        <part ...
    .
    .
    .

</definitions>

Как я могу привязаться к Java-классам, не трогать WSDL?

Часть из файла POM:

                <execution>
                    <id>generate-sources</id>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>wsdl2java</goal>
                    </goals>
                    <configuration>
                        <wsdlOptions>
                            <wsdlOption>
                                <wsdl>src/main/resources/WF.WSDL</wsdl>

                                <extraargs>
                                    <extraarg>-client</extraarg>
                                    <extraarg>-verbose</extraarg>
                                    <extraarg>-autoNameResolution</extraarg>
                                </extraargs>

                                <bindingFiles>
                                    <bindingFile>src/main/resources/WF.xjb</bindingFile>
                                </bindingFiles>
                            </wsdlOption>
                        </wsdlOptions>
                        <defaultOptions>
                            <frontEnd>jaxws21</frontEnd>
                        </defaultOptions>
                    </configuration>
                </execution>

эта опция не помогает.

<extraarg>-autoNameResolution</extraarg>

Идея состоит в том, чтобы распространять каждую схему в отдельном пакете, но выражение XPath не сработало

Часть из WF.xjb:

<?xml version="1.0" encoding="UTF-8"?>
<jaxb:bindings xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
               version="2.1"
               xmlns:xsd="http://www.w3.org/2001/XMLSchema">

    <jaxb:bindings node="/definitions/types/xsd:schema[1]">
        <jaxb:schemaBindings>
            <jaxb:package name="abc" />
        </jaxb:schemaBindings>
    </jaxb:bindings>

</jaxb:bindings>

Как заставить это работать или какие-либо другие идеи?

0 ответов

Другие вопросы по тегам