Menu Close

第11章 WSDL でのエンドポイントの定義方法の理解

概要

エンドポイントは、インスタンス化されたサービスを表します。これらは、バインディングと、エンドポイントの公開に使用されるネットワークの詳細を組み合わせることで定義されます。

概要

エンドポイントは、サービスの物理マニフェストとして考えることができます。これは、サービスによって使用される論理データの物理表現を指定するバインディングと、他のエンドポイントによってサービスを通信可能にするために使用される物理接続の詳細を定義するネットワークの詳細を組み合わせたものです。

注記

CXF プロバイダーは、クライアントに対応する CXF コンシューマーのサーバーです。ルートの開始エンドポイントとして CXF (camel-cxf) コンポーネントを使用している場合、エンドポイントは Camel コンシューマーと CXF プロバイダーの両方になります。ルートの終了エンドポイントとして Camel CXF コンポーネントを使用している場合、エンドポイントは Camel プロデューサーと CXF コンシューマーの両方になります。

エンドポイントおよびサービス

バインディングが 1 つのインターフェースのみをマップできるのと同様に、エンドポイントは 1 つのサービスにのみマッピングできます。ただし、サービスは任意の数のエンドポイントでマニフェストできます。たとえば、4 つの異なるエンドポイントによってマニフェストされたチケット販売サービスを定義できます。ただし、チケットの販売サービスとウィジェット販売サービスの両方がマニフェストされた単一のエンドポイントを持つことはできません。

WSDL 要素

エンドポイントは、WSDL service 要素と WSDL port 要素の組み合わせを使用してコントラクトに定義されます。service 要素は、関連する port 要素のコレクションです。port 要素は、実際のエンドポイントを定義します。

WSDL service 要素には一意の名前を指定する 1 つの属性 name があります。service 要素は、関連する port 要素のコレクションの親要素として使用されます。WSDL では、port 要素の関連性について何も指定しません。適切であると見なされる方法で port 要素を関連付けることができます。

WSDL port 要素には、エンドポイントで使用されるバインディングを指定する binding 属性があり、これは wsdl:binding 要素への参照です。また、name 属性も含まれます。これは、すべてのポート間で一意の名前を提供する必須の属性です。port 要素は、エンドポイントによって使用される実際のトランスポートの詳細を指定する要素の親要素です。トランスポートの詳細を指定するために使用される要素は、以下のセクションで説明します。

コントラクトへのエンドポイントの追加

Apache CXF は、事前定義されたサービスインターフェースおよびバインディング組み合わせのエンドポイントを生成できるコマンドラインツールを提供します。

このツールにより、コントラクトに適切な要素が追加されます。ただし、エンドポイントの定義に使用されるさまざまなトランスポートがどのように機能するかについて、ある程度理解しておくことが推奨されます。

テキストエディターを使用して、エンドポイントをコントラクトに追加することもできます。コントラクトを編集する場合は、コントラクトが有効であることを確認する必要があります。

サポートされるトランスポート

エンドポイント定義は、Apache CXF がサポートするトランスポートごとに定義されたエクステンションを使用して構築されます。これには、以下のトランスポートが含まれます。

  • HTTP
  • CORBA
  • Java Messaging Service