Menu Close

第5章 WSDL のバインディングについて

概要

バインディングは、サービスの定義に使用される論理メッセージを、エンドポイントによって送受信できる具体的なペイロードフォーマットにマップします。

概要

バインディングは、サービスによって使用される論理メッセージと、エンドポイントが物理環境で使用する具体的なデータフォーマットとのブリッジを提供します。論理メッセージがエンドポイントによってネットワークで使用されるペイロード形式にマップされる方法を記述します。バインディング内では、パラメーターの順序、具体的なデータ型、戻り値などの詳細が指定されます。たとえば、RPC 呼び出しが必要とする順番を反映するために、メッセージの部分をバインディングで並べ替えることができます。バインディング型に応じて、どのメッセージの部分 (ある場合) がメソッドの戻り値の型を表すかを特定することもできます。

ポート型およびバインディング

ポート型およびバインディングは直接関連するものです。ポート型は、2 つの論理サービス間の対話セットの定義です。バインディングとは、論理サービスの実装に使用されるメッセージが物理環境でインスタンス化される方法の具体的な定義です。各バインディングは、ポート型によって定義された論理サービスを公開する 1 つのエンドポイントの定義を終了する一連のネットワーク詳細に関連付けられます。

エンドポイントが単一のサービスのみを定義するようにするには、WSDL では単一のポート型のみを表すことができる必要があります。たとえば、2 つのポート型を持つコントラクトがある場合は、これら両方を具体的なデータ形式にマッピングする単一のバインディングを作成することはできません。2 つのバインディングが必要です。

ただし、WSDL では、ポート型を複数のバインディングにマッピングできます。たとえば、コントラクトにポート型が 1 つある場合は、2 つ以上のバインディングにマップできます。各バインディングは、メッセージ部分のマッピング方法を変更したり、メッセージ用に完全に異なるペイロード形式を指定したりできます。

WSDL 要素

バインディングは、WSDL binding 要素を使用してコントラクトで定義されます。binding 要素は バインディングの名前を指定する name や PortType への参照を提供する type などの属性で構成されます。この属性の値は、4章論理インターフェースの定義 で説明されているように、バインディングをエンドポイントに関連付けるために使用されます。

実際のマッピングは、binding 要素の子で定義されます。これらの要素は、使用するペイロードフォーマットの種類によって異なります。異なるペイロードフォーマットと、それらのマッピングの指定に使用される要素は以降の章で説明します。

コントラクトへの追加

Apache CXF は、事前定義のサービスインターフェースのバインディングを生成できるコマンドラインツールを提供します。

ツールにより、コントラクトに適切な要素が追加されます。ただし、さまざまな種類のバインディングの仕組みをある程度理解しておくことが推奨されます。

テキストエディターを使用して、バインディングをコントラクトに追加することもできます。コントラクトの手動編集時に、コントラクトが有効であることを確認する責任があります。

サポートされているバインディング

Apache CXF は以下のバインディングをサポートします。

  • SOAP 1.1
  • SOAP 1.2
  • CORBA
  • Pure XML