Несколько ‹schemaBindings› для целевого пространства имен в одном файле

Я использую maven-jaxb2-plugin для создания java-файлов из wsdl one. После запуска цели «генерировать источники» я получаю следующую ошибку

[ERROR] Error while parsing schema(s).Location[
file:/home/*/src/main/resources/soap/binding.xjb{8,30} ]. 
com.sun.istack.SAXParseException2; systemId: file:/home/*/src/main/resources/soap/binding.xjb; lineNumber: 8; columnNumber: 30; 
Multiple <schemaBindings> are defined for the target namespace "http://schemas.***"

Есть несколько файлов wsdl, и для каждого из них мне нужен другой целевой пакет, поэтому я попытался использовать файл привязки, но пока только для одного wsdl.

Вот моя конфигурация плагина

<configuration>
    <schemaLanguage>WSDL</schemaLanguage>
    <schemaDirectory>
        ${basedir}/src/main/resources/soap
    </schemaDirectory>
    <schemaIncludes>
        <include>manager/*.wsdl</include>
    </schemaIncludes>
    <bindingDirectory>
        ${basedir}/src/main/resources/soap
    </bindingDirectory>
</configuration>

Вот файл binding.xjb

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

    <jaxb:bindings schemaLocation="manager/service.wsdl" multiple="true" node="//xs:schema">
        <jaxb:schemaBindings>
            <jaxb:package name="com.test.manager"/>
        </jaxb:schemaBindings>
    </jaxb:bindings>
</jaxb:bindings>

Начало файла service.wsdl

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
                  xmlns:sch0="http://schemas.***"
                  xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
                  xmlns:tns="http://schemas.***"
                  targetNamespace="http://schemas.***">
    <wsdl:types>
        <xs:schema xmlns="http://schemas.***" 
                   xmlns:xs="http://www.w3.org/2001/XMLSchema" 
                   attributeFormDefault="unqualified" 
                   elementFormDefault="qualified" 
                   targetNamespace="http://schemas.***">
            <xs:simpleType name="NumericReference">
                ***
            </xs:simpleType> 
            <xs:simpleType name="EntityNumber">
                ***
            </xs:simpleType>
        </xs:schema>
        <xs:schema xmlns="http://schemas.***" 
                   xmlns:xs="http://www.w3.org/2001/XMLSchema" 
                   attributeFormDefault="unqualified" 
                   elementFormDefault="qualified" 
                   targetNamespace="http://schemas.***">
            <xs:complexType name="DisplayGroup">

Похоже, проблема связана с несколькими элементами xs:schema с одним и тем же targetNamespace, но я не могу найти, как это исправить, не изменяя wsdl.


person funny-shmunny    schedule 13.10.2017    source источник


Ответы (1)


JAXB обычно сопоставляет одно целевое пространство имен с одним пакетом, поэтому вы не можете указать разные schemaBindings для одного и того же целевого пространства имен.

person lexicore    schedule 13.10.2017