0

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

<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 中的元素定义引用了 schema 中的 ComplexType 定义时。然后不会生成元素类aaa ,只生成aaaType类。

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

有没有办法可以指定 wsdl2java 来生成类aaaaaaType并在aaa中引用aaaType

4

1 回答 1

0

您可以检查WSDLxmlns:tnstargetNamespace模式。

<xsd:element name="aaa"... - 它可以在模式本身中定义。

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

于 2014-10-14T07:12:41.213 回答