财产&#34;任何&#34;已定义。使用<jaxb:property>解决此冲突

时间:2015-10-14 10:42:25

标签: java xml web-services maven jaxb

我尝试使用CXF来使用SOAP Web服务。我遇到的问题是JAXB在尝试使用WSDL时会抛出。它不喜欢的部分是:

<xs:sequence>
    <xs:any minOccurs="0" maxOccurs="unbounded" namespace="http://www.w3.org/2001/XMLSchema" processContents="lax"/>
    <xs:any minOccurs="1" namespace="urn:schemas-microsoft-com:xml-diffgram-v1" processContents="lax"/>
</xs:sequence>

它给出错误:

  

财产&#34;任何&#34;已定义。使用<jaxb:property>解决此冲突。

通过阅读this之类的其他问题,可以定义外部绑定文件来解决错误。问题是我不确定如何在cxf-codegen-plugin内执行此操作。谁能指出我该怎么做?

这是我的pom.xml的相关部分

<plugin>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-codegen-plugin</artifactId>
    <version>3.1.2</version>
    <executions>
        <execution>
            <id>generate-sources</id>
            <phase>generate-sources</phase>
            <configuration>
                <sourceRoot>${project.build.directory}/generated/cxf</sourceRoot>
                <wsdlOptions>
                    <wsdlOption>
                        <wsdl>${basedir}/src/main/resources/DataGeneratorInbox.wsdl</wsdl>
                    </wsdlOption>
                </wsdlOptions>
            </configuration>
            <goals>
                <goal>wsdl2java</goal>
            </goals>
        </execution>
    </executions>
</plugin>

1 个答案:

答案 0 :(得分:2)

  

问题是我不确定如何在cxf-codegen-plugin内执行此操作。谁能指出我该怎么做?

您可以使用<bindingFiles>属性在cxf-codegen-plugin中添加绑定文件,如下所示:

<plugin>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-codegen-plugin</artifactId>
    <version>3.1.2</version>
    <executions>
        <execution>
            <id>generate-sources</id>
            <phase>generate-sources</phase>
            <configuration>
                <sourceRoot>${project.build.directory}/generated/cxf</sourceRoot>
                <wsdlOptions>
                    <wsdlOption>
                        <wsdl>${basedir}/src/main/resources/DataGeneratorInbox.wsdl</wsdl>
                    </wsdlOption>
                </wsdlOptions>
                <bindingFiles>
                    <bindingFile><!-- path to your file --></bindingFile>
                </bindingFiles>
            </configuration>
            <goals>
                <goal>wsdl2java</goal>
            </goals>
        </execution>
    </executions>
</plugin>