Binding wsImport:jaxb nameXmlTransform不工作:已在使用同名的类/接口

Binding wsImport:jaxb nameXmlTransform不工作:已在使用同名的类/接口,binding,xsd,jaxb,wsdl2java,wsimport,Binding,Xsd,Jaxb,Wsdl2java,Wsimport,我需要从WSDL文件生成Java类 我正在使用以下配置的jaxws-maven插件插件: <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>jaxws-maven-plugin</artifactId> <version>2.5</version> <executions> <exe

我需要从WSDL文件生成Java类

我正在使用以下配置的
jaxws-maven插件
插件:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>jaxws-maven-plugin</artifactId>
    <version>2.5</version>
    <executions>
        <execution>
            <id>wsimportPhase</id>
            <goals>
                <goal>wsimport</goal>
            </goals>
            <configuration>
                <keep>true</keep>
                <verbose>true</verbose>
                <packageName>my.package.name</packageName>
                <wsdlFiles>
                    <wsdlFile>${basedir}/wsdl/myWSDL.wsdl</wsdlFile>
                </wsdlFiles>
                <wsdlLocation>wsdl/myWSDL.wsdl</wsdlLocation>
                <bindingDirectory>wsdl</bindingDirectory>
                <bindingFiles>
                    <bindingFile>myBinding.xml</bindingFile>
                </bindingFiles>
                <sourceDestDir>${basedir}/src/main/java</sourceDestDir>
            </configuration>
        </execution>
    </executions>
</plugin>
<?xml version="1.0" encoding="UTF-8"?>

<jaxws:bindings version="2.1"
    schemaLocation="myWSDL.wsdl" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
    xmlns:jaxws="http://java.sun.com/xml/ns/jaxws"
    xmlns:jaxb="http://java.sun.com/xml/ns/jaxb">
    <jaxws:bindings node="wsdl:definitions/wsdl:types/xs:schema/xs:import">
        <jaxb:bindings schemaLocation="importedXSD_1.xsd">
            <jaxb:bindings node="xs:complexType[@name='DuplicatedType']">
                <jaxb:schemaBindings>
                    <jaxb:nameXmlTransform>
                        <jaxb:typeName suffix="Suffix1"/>
                        <jaxb:elementName suffix="Suffix1"/>
                    </jaxb:nameXmlTransform>
                </jaxb:schemaBindings>
            </jaxb:bindings>
        </jaxb:bindings>
        <jaxb:bindings schemaLocation="importedXSD_2.xsd">
            <jaxb:bindings node="xs:complexType[@name='DuplicatedType']">
                <jaxb:schemaBindings>
                    <jaxb:nameXmlTransform>
                        <jaxb:typeName suffix="Suffix2"/>
                        <jaxb:elementName suffix="Suffix2"/>
                    </jaxb:nameXmlTransform>
                </jaxb:schemaBindings>
            </jaxb:bindings>
        </jaxb:bindings>
    </jaxws:bindings>
</jaxws:bindings>

XPath在xsd中正确地找到了所需的complexType,因此我不知道如何修复它。

我找到了结合这两个问题中解释的解决方案的解决方案:

我已采取以下步骤:

  • 我创建了两个绑定文件,一个用于jaxws绑定,另一个用于jaxb绑定

    以下是两个文件:

  • jaxws-binding.xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <jaxws:bindings version="2.1"
        schemaLocation="myWSDL.wsdl" 
        xmlns:xs="http://www.w3.org/2001/XMLSchema"
        xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
        xmlns:jaxws="http://java.sun.com/xml/ns/jaxws"
        xmlns:jaxb="http://java.sun.com/xml/ns/jaxb">
        <jaxws:bindings node="wsdl:definitions/wsdl:types/xs:schema/xs:import">
        </jaxws:bindings>
    </jaxws:bindings>
    
    <?xml version="1.0" encoding="UTF-8"?>
    <jaxb:bindings version="1.0"
        xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
        xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
        xmlns:xsd="http://www.w3.org/2001/XMLSchema">   
        <jaxb:bindings schemaLocation="importedXSD_1.xsd" node="xsd:complexType[@name='DuplicatedType']">
            <jaxb:class name="DuplicatedTypeSuffix1"/>
        </jaxb:bindings>
        <jaxb:bindings schemaLocation="importedXSD_2.xsd" node="xsd:complexType[@name='DuplicatedType']">
            <jaxb:class name="DuplicatedTypeSuffix2"/>
        </jaxb:bindings>
    </jaxb:bindings>
    
    
    
    jaxb-binding.xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <jaxws:bindings version="2.1"
        schemaLocation="myWSDL.wsdl" 
        xmlns:xs="http://www.w3.org/2001/XMLSchema"
        xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
        xmlns:jaxws="http://java.sun.com/xml/ns/jaxws"
        xmlns:jaxb="http://java.sun.com/xml/ns/jaxb">
        <jaxws:bindings node="wsdl:definitions/wsdl:types/xs:schema/xs:import">
        </jaxws:bindings>
    </jaxws:bindings>
    
    <?xml version="1.0" encoding="UTF-8"?>
    <jaxb:bindings version="1.0"
        xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
        xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
        xmlns:xsd="http://www.w3.org/2001/XMLSchema">   
        <jaxb:bindings schemaLocation="importedXSD_1.xsd" node="xsd:complexType[@name='DuplicatedType']">
            <jaxb:class name="DuplicatedTypeSuffix1"/>
        </jaxb:bindings>
        <jaxb:bindings schemaLocation="importedXSD_2.xsd" node="xsd:complexType[@name='DuplicatedType']">
            <jaxb:class name="DuplicatedTypeSuffix2"/>
        </jaxb:bindings>
    </jaxb:bindings>
    
    
    
  • 我已经在pom.xml中jaxbmaven插件的
    标记中声明了两个绑定文件