第11章 WSDL でエンドポイントを定義する方法について
概要
エンドポイントは、インスタンス化されたサービスを表します。これらは、バインディングと、エンドポイントを公開するために使用されるネットワークの詳細を組み合わせて定義されます。
概要
エンドポイントは、サービスの物理的なマニフェストとして考えることができます。これは、サービスが使用する論理データの物理表現を指定するバインディングと、サービスを他のエンドポイントによる問い合わせ可能にするために使用される物理接続の詳細を定義する一連のネットワーク詳細を組み合わせたものです。
CXF プロバイダーは、クライアントに対応する CXF コンシューマーのサーバーです。ルートの開始エンドポイントとして CXF (camel-cxf
) コンポーネントを使用している場合、エンドポイントは Camel コンシューマーと CXF プロバイダーの両方になります。Camel CXF コンポーネントをルートで終了エンドポイントとして使用する場合、エンドポイントは Camel プロデューサーおよび CXF コンシューマーの両方になります。
エンドポイントおよびサービス
バインディングが単一インターフェイスのみをマップできるのと同じ方法で、エンドポイントは単一のサービスにのみマッピングできます。ただし、サービスは任意の数のエンドポイントでマニフェストできます。たとえば、4 つの異なるエンドポイントによってマニフェストされたチケット公開サービスを定義できます。ただし、チケット販売サービスとウィジェット販売サービスの両方をマニフェストしたエンドポイントを 1 つ入れることはできませんでした。
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