第28章 WSDL コントラクトからのコンシューマーの開発


概要

コンシューマーを作成する 1 つの方法は、WSDL コントラクトから開始することです。コントラクトは、コンシューマーが要求するサービスの操作、メッセージ、およびトランスポートの詳細を定義します。コンシューマーの開始点コードは、WSDL コントラクトから生成されます。コンシューマーが必要とする機能が、生成されたコードに追加されます。

28.1. スタブコードの生成

概要

cxf-codegen-plugin Maven プラグインは、WSDL コントラクトからスタブコードを生成します。スタブコードは、リモートサービスで操作を呼び出すために必要なサポートコードを提供します。

コンシューマーの場合、cxf-codegen-plugin Maven プラグインは以下のタイプのコードを生成します。

  • スタブコード — コンシューマーを実装するためのサポートファイル。
  • 開始点コード — リモートサービスに接続し、リモートサービスのすべての操作を呼び出すサンプルコード。

コンシューマーコードの生成

コンシューマーコードを生成するには、cxf-codegen-plugin Maven プラグインを使用します。例28.1「コンシューマーコード生成」 コードジェネレーターを使用してコンシューマーコードを生成する方法を示します。

例28.1 コンシューマーコード生成

<plugin>
  <groupId>org.apache.cxf</groupId>
  <artifactId>cxf-codegen-plugin</artifactId>
  <version>${cxf.version}</version>
  <executions>
    <execution>
      <id>generate-sources</id>
      <phase>generate-sources</phase>
      <configuration>
        <sourceRoot>outputDir</sourceRoot>
        <wsdlOptions>
          <wsdlOption>
            <wsdl>wsdl</wsdl>
            <extraargs>
              <extraarg>-client</extraarg>
            </extraargs>
          </wsdlOption>
        </wsdlOptions>
      </configuration>
      <goals>
        <goal>wsdl2java</goal>
      </goals>
    </execution>
  </executions>
</plugin>

ここで、outputDir は、生成されたファイルが配置されるディレクトリーの場所であり、wsdl は WSDL コントラクトの場所を指定します。-client オプションは、コンシューマーの main() メソッドの開始点コードを生成します。

cxf-codegen-plugin Maven プラグインで利用可能な引数の完全リストは、「cxf-codegen-plugin」 を参照してください。

生成されたコード

コード生成プラグインは、例26.1「HelloWorld WSDL コントラクト」 に示すコントラクトに対して次の Java パッケージを生成します。

  • org.apache.hello_world_soap_http — このパッケージは、http://apache.org/hello_world_soap_http ターゲット名前空間から生成されます。この名前空間で定義されたすべての WSDL エンティティー (たとえば、Greeter ポートタイプや SOAPService サービス) は、この Java パッケージの Java クラスにマップされます。
  • org.apache.hello_world_soap_http.types: このパッケージは http://apache.org/hello_world_soap_http/types ターゲット名前空間から生成されます。この namespace で定義されたすべての XML タイプ (HelloWorld コントラクトの wsdl:types 要素で定義されたもの) は、この Java パッケージの Java クラスにマップします。

cxf-codegen-plugin Maven プラグインによって生成されたスタブファイルは、以下のカテゴリーに分類されます。

  • org.apache.hello_world_soap_http パッケージの WSDL エンティティーを表すクラス。次のクラスは、WSDL エンティティーを表すために生成されます。

    • greeter: Greeter wsdl:portType 要素を表す Java インターフェイス。JAX-WS の用語では、この Java インターフェイスはサービスエンドポイントインターフェイス (SEI) です。
    • SOAPService - SOAPService wsdl:service 要素を表す Java サービスクラス ( javax.xml.ws.Service の拡張)
    • PingMeFault: pingMeFault wsdl:fault 要素を表す Java 例外クラス (java.lang.Exception を拡張)。
  • org.objectweb.hello_world_soap_http.types パッケージの XML タイプを表すクラス。HelloWorld の例では、生成されるタイプは、要求メッセージと応答メッセージのさまざまなラッパーのみです。これらのデータ型の一部は、非同期呼び出しモデルに役立ちます。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.