CXF wsdl2java无法正确读取架构

时间:2014-10-08 20:16:50

标签: xsd cxf wsdl2java cxf-codegen-plugin

我在wsdl2java插件下面使用配置为使用WSDL生成java类。

<plugin>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-codegen-plugin</artifactId>
            <version>3.0.1</version>
            <executions>
                <execution>
                    <id>generate-sources</id>
                    <phase>generate-sources</phase>
                    <configuration>
                        <sourceRoot>${basedir}/src/main/java</sourceRoot>
                        <wsdlOptions>
                            <wsdlOption>
                                <wsdl>src/main/resources/XXXXService.wsdl</wsdl>
                                <validate>none</validate>
                                <extraargs>
                                    <extraarg>-server</extraarg>
                                    <extraarg>-impl</extraarg>
                                    <extraarg>-verbose</extraarg>
                                    <extraarg>-p</extraarg>
                                    <extraarg>http://XXX/YY=XXX</extraarg>
                                    <extraarg>-autoNameResolution</extraarg>
                                </extraargs>

                            </wsdlOption>
                        </wsdlOptions>
                    </configuration>
                    <goals>
                        <goal>wsdl2java</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

现在,我的WSDL中包含了下面的模式。

<xsd:include schemaLocation="myschema.xsd" xmlns="tns"></xsd:include>

当我的元素定义在我的WSDL中时,如下所示,它会为 myElement 生成一个类,这很好:

<xsd:element name="myElement">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="a" type="xsd:string"
                    minOccurs="1">
                </xsd:element>
                <xsd:element name="b" type="xsd:string"
                    minOccurs="1">
                </xsd:element>                  
            </xsd:sequence>
        </xsd:complexType>

但是当我在WSDL中的元素定义引用模式中的ComplexType定义时。然后,只有生成 aaaType 类才会生成元素类 aaa

<xsd:element name="aaa"
        type="tns:aaaType">
</xsd:element>

有没有办法可以指定wsdl2java来生成 aaa aaaType 类,并在 aaa aaaType >?

1 个答案:

答案 0 :(得分:0)

您可以在WSDL和架构上检查xmlns:tnstargetNamespace

<xsd:element name="aaa" ... - 可以在架构中定义。

您可以尝试浏览WSDL并检查它是否正确,因为问题似乎与架构包含有关。