Дублирующиеся имена элементов, несколько схем с одинаковыми 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>
Как заставить это работать или какие-либо другие идеи?