1. 序章

このチュートリアルでは、WSDL(Webサービス記述言語)ファイルからJavaクラスを生成するようにJAX-WSmavenプラグインを構成する方法を示します。 その結果、生成されたクラスを使用してWebサービスを簡単に呼び出すことができるようになります。

2. Mavenプラグインの構成

まず、pom.xmlファイルのビルドプラグインセクションにwsimportゴールを持つJAX-WSMavenプラグインを含めましょう。

<build>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>jaxws-maven-plugin</artifactId>
            <version>2.6</version>
            <executions>
                <execution>
                    <goals>
                        <goal>wsimport</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

つまり、 wsimport ゴールは、JAX-WSクライアントおよびサービスで使用するためのJAX-WSポータブルアーティファクトを生成します。 このツールはWSDLファイルを読み取り、Webサービスの開発、デプロイ、および呼び出しに必要なすべてのアーティファクトを生成します。

2.1. WSDLディレクトリの構成

Mavenプラグインセクション内で、 wsdlDirectory構成プロパティは、WSDLファイルが配置されている場所をプラグインに通知します。 この例では、プロジェクトの src / main /resourcesディレクトリにあるすべてのWSDLファイルを取得するようにプラグインに指示します。

<plugin>
    ...
    <configuration>
        <wsdlDirectory>${project.basedir}/src/main/resources/</wsdlDirectory>
    </configuration>
</plugin>

2.2. WSDLディレクトリ固有のファイル構成

さらに、 wsdlFiles 構成プロパティを使用して、クラスを生成するときに考慮するWSDLファイルのリストを定義できます。

<plugin>
    ...
    <configuration>
        <wsdlDirectory>${project.basedir}/src/main/resources/</wsdlDirectory>
        <wsdlFiles>
            <wsdlFile>file1.wsdl</wsdlFile>
            <wsdlFile>file2.wsdl</wsdlFile>
            ...
        </wsdlFiles>
    </configuration>
</plugin>

ただし、 wsdlFilesプロパティが設定されていない場合、wsdlDirectoryプロパティで指定されたディレクトリ内のすべてのファイルがと見なされます。

2.3. WSDLURLの構成

または、プラグインのwsdlUrl構成プロパティを構成することもできます。

<plugin>
    ...
    <configuration>
        <wsdlUrls>
            <wsdlUrl>http://localhost:8888/ws/country?wsdl</wsdlUrl>
        ...
        </wsdlUrls>
    </configuration>
</plugin>

このオプションを使用するには、 WSDLファイルのURLをホストしているサーバーが稼働していて、プラグインがそれを読み取れるようにする必要があります

2.4. 生成されたクラスディレクトリの構成

次に、 packageName プロパティで、生成されたクラスのパッケージ名を設定できます。 sourceDestDir で、出力ディレクトリを設定できます。

<plugin>
    ...
    <configuration>
        <packageName>com.baeldung.soap.ws.client</packageName>
        <sourceDestDir>
            ${project.build.directory}/generated-sources/
        </sourceDestDir>
    </configuration>   
</plugin>

その結果、wsdlDirectoryオプションを使用したプラグイン構成の最終バージョンは次のようになります。

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>jaxws-maven-plugin</artifactId>
    <version>2.6</version>
    <executions>
        <execution>
            <goals>
                <goal>wsimport</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <wsdlDirectory>${project.basedir}/src/main/resources/</wsdlDirectory>
        <packageName>com.baeldung.soap.ws.client</packageName>
        <sourceDestDir>
            ${project.build.directory}/generated-sources/
        </sourceDestDir>
    </configuration>
</plugin>

3. JAX-WSプラグインの実行

最後に、プラグインを構成したら、Mavenを使用してクラスを生成し、出力ログを確認できます。

mvn clean install
[INFO] --- jaxws-maven-plugin:2.6:wsimport (default) @ jaxws ---
[INFO] Processing: file:/D:/projetos/baeldung/tutorials/maven-modules/maven-plugins/jaxws/src/main/resources/country.wsdl
[INFO] jaxws:wsimport args: [-keep, -s, 'D:\projetos\baeldung\tutorials\maven-modules\maven-plugins\jaxws\target\generated-sources', -d, 'D:\projetos\baeldung\tutorials\maven-modules\maven-plugins\jaxws\target\classes', -encoding, UTF-8, -Xnocompile, -p, com.baeldung.soap.ws.client, "file:/D:/projetos/baeldung/tutorials/maven-modules/maven-plugins/jaxws/src/main/resources/country.wsdl"]
parsing WSDL...
Generating code...

4. 生成されたクラスを確認する

プラグインを実行した後、sourceDestDirプロパティで構成されたフォルダーtarget/generated-sourcesの出力を確認できます。

生成されたクラスは、 packageName プロパティで構成されているように、com.baeldung.soap.ws.clientにあります。

com.baeldung.soap.ws.client.Country.java
com.baeldung.soap.ws.client.CountryService.java  
com.baeldung.soap.ws.client.CountryServiceImplService.java
com.baeldung.soap.ws.client.Currency.java
com.baeldung.soap.ws.client.ObjectFactory.java

5. 結論

この記事では、JAX-WSプラグインを使用してWSDLファイルからJavaクラスを生成する方法を説明しました。 その結果、Webサービスクライアントを作成し、生成されたクラスを使用してサービスを呼び出すことができるようになりました。

このアプリケーションのソースコードは、GitHubから入手できます。