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 の要素定義がスキーマの ComplexType 定義を参照している場合。次に、要素クラスaaaは生成されず、aaaTypeクラスのみが生成されます。

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

wsdl2java を指定して、クラスaaaaaaTypeの両方を生成し、 aaa内でaaaTypeを参照する方法はありますか?

4

1 に答える 1