第5章 WSDL のバインディングを理解

概要

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

概要

バインディングは、サービスによって使用される論理メッセージと、エンドポイントが物理的な世界で使用する具体的なデータ形式との間のブリッジを提供します。これらは、論理メッセージがエンドポイントによってネットワーク上で使用されるペイロード形式にどのようにマッピングされるかを説明します。パラメーターの順序、具体的なデータ型、戻り値などの詳細が指定されるのはバインディング内です。たとえば、メッセージの一部をバインディングで並べ替えて、RPC 呼び出しに必要な順序を反映させることができます。バインディングタイプに応じて、メソッドの戻りタイプを表すメッセージ部分がある場合は、それを識別することもできます。

ポートタイプとバインディング

ポートタイプとバインディングは直接関連しています。ポートタイプは、2 つの論理サービス間の一連の相互作用の抽象的な定義です。バインディングは、論理サービスの実装に使用されるメッセージが物理的な世界でどのようにインスタンス化されるかを具体的に定義したものです。次に、各バインディングは、ポートタイプによって定義された論理サービスを公開する 1 つのエンドポイントの定義を完了する一連のネットワーク詳細に関連付けられます。

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

ただし、WSDL では、ポートタイプを複数のバインディングにマップできます。たとえば、コントラクトのポートタイプが単一の場合、それを 2 つ以上のバインディングにマップできます。各バインディングは、メッセージの一部のマッピング方法を変更したり、メッセージにまったく異なるペイロード形式を指定したりする可能性があります。

WSDL 要素

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

実際のマッピングは、binding 要素の子で定義されます。これらの要素は、使用するペイロード形式のタイプによって異なります。次の章では、さまざまなペイロード形式とそれらのマッピングを指定するために使用される要素について説明します。

コントラクトへの追加

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

ツールにより、コントラクトに適切な要素が追加されます。ただし、さまざまなタイプのバインディングがどのように機能するかについてある程度の知識を得ることが推奨されます。

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

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

Apache CXF は、次のバインディングをサポートしています。

  • SOAP 1.1
  • SOAP 1.2
  • CORBA
  • Pure XML