Как я могу изменить префикс пространства имен с JAXB2?

В моем POM я использую плагин JAXB2 для генерации классов из WSDL:

    <build>
    <finalName>myApp</finalName>
    <plugins>
        <plugin>
            <groupId>org.jvnet.jaxb2.maven2</groupId>
            <artifactId>maven-jaxb2-plugin</artifactId>
            <version>${maven-jaxb2-plugin.version}</version>
            <executions>
                <execution>
                    <goals>
                        <goal>generate</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <strict>false</strict>
                <extension>true</extension>
                <schemaLanguage>WSDL</schemaLanguage>
                <schemaDirectory>${project.basedir}/src/main/resources/wsdl</schemaDirectory>
                <outputDirectory>${project.basedir}/src/main/java</outputDirectory>
                <cleanPackageDirectories>false</cleanPackageDirectories>
                <schemaIncludes>
                    <include>*.wsdl</include>
                </schemaIncludes>
                <!-- 
                <bindingDirectory>${project.basedir}/src/main/resources/wsdl</bindingDirectory>
                <bindingIncludes>
                    <include>bindings.xjb</include>
                </bindingIncludes>
                -->
                <!-- <args> <arg>-Xannotate</arg> </args> -->
                <plugins>
                    <plugin>
                        <groupId>org.jvnet.jaxb2_commons</groupId>
                        <artifactId>jaxb2-basics-annotate</artifactId>
                        <version>1.0.2</version>
                    </plugin>
                </plugins>
            </configuration>
        </plugin>
    </plugins>
</build>

Поскольку я намереваюсь изменить префикс пространства имен по умолчанию, используемый JAXB2, я просмотрел в интернете Stackru, чтобы найти что-то, что могло бы мне помочь. Я нашел сообщение для использования файла bindings.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:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xmlns:namespace="http://jaxb2-commons.dev.java.net/namespace-prefix"
            xsi:schemaLocation="http://java.sun.com/xml/ns/jaxb 


http://java.sun.com/xml/ns/jaxb/bindingschema_2_0.xsd 
                                http://jaxb2-commons.dev.java.net/namespace-prefix">
        <jaxb:globalBindings typesafeEnumMaxMembers="2048" />

        <jaxb:bindings schemaLocation="./myWsdl.wsdl">
            <jaxb:schemaBindings>
                <jaxb:package name="com.foo.bar" />
            </jaxb:schemaBindings>

            <jaxb:bindings>
                <namespace:prefix name="v2" />    
                <!-- Additional @XmlNs prefix declarations to take effect for this schema/package -->
            <namespace:prefix name="xsi" namespaceURI="http://www.w3.org/2001/XMLSchema-instance" />
            </jaxb:bindings>
        </jaxb:bindings>

    </jaxb:bindings>

But when running a full build I always get this exception:

    [ERROR] Error while parsing schema(s).Location [ file:/E:/projects/XXX/git/myApp/src/main/resources/wsdl/bindings.xjb{16,30}].
com.sun.istack.SAXParseException2; systemId: file:/E:/projects/XXX/git/myApp/src/main/resources/wsdl/bindings.xjb; lineNumber: 16; columnNumber: 30; Die "jaxb:schemaBindings"-Anpassung ist mit keinem Schemaelement verknüpft.
    at com.sun.tools.xjc.reader.internalizer.Internalizer.reportError(Internalizer.java:624)
    at com.sun.tools.xjc.reader.internalizer.Internalizer.reportError(Internalizer.java:618)
    at com.sun.tools.xjc.reader.internalizer.Internalizer.move(Internalizer.java:443)
    at com.sun.tools.xjc.reader.internalizer.Internalizer.move(Internalizer.java:420)
...

-> The "jaxb:schemaBindings" customization is not associated with any schema element.

Что я делаю неправильно?

0 ответов

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