18.2. JAX-RS クライアントエンドポイントの設定

18.2.1. JAX-RS クライアントエンドポイントの定義

クライアントプロキシーの挿入

クライアントプロキシー Bean を XML 言語 (BlueprintXML または SpringXML) でインスタンス化する主なポイントは、別の Bean に挿入し、クライアントプロキシーを使用して REST サービスを呼び出すことができるようにすることです。XML でクライアントプロキシー Bean を作成するには、jaxrs:client 要素を使用します。

Namespaces

JAX-RS クライアントエンドポイントは、サーバーエンドポイントとは 異なる XML 名前空間を使用して定義されます。次の表は、どの XML 言語にどの名前空間を使用するかを示しています。

XML 言語クライアントエンドポイントの namespace

ブループリント

http://cxf.apache.org/blueprint/jaxrs-client

Spring

http://cxf.apache.org/jaxrs-client

基本のクライアントエンドポイント定義

次の例は、BlueprintXML または SpringXML でクライアントプロキシー Bean を作成する方法を示しています。

<jaxrs:client id="restClient"
       address="http://localhost:8080/test/services/rest"
       serviceClass="org.apache.cxf.systest.jaxrs.BookStoreJaxrsJaxws"/>

基本的なクライアントエンドポイントを定義するには、次の属性を設定する必要があります。

id
クライアントプロキシーの Bean ID を使用して、XML 設定内の他の Bean にクライアントプロキシーを挿入できます。
address
address 属性は REST 呼び出しのベース URL を指定します。
serviceClass
serviceClass 属性は、ルートリソースクラス (@Path によりアノテーションが付けられる) を指定して、REST サービスの説明を提供します。実際、これは server クラスですが、クライアントで直接使用されません。指定されたクラスは、クライアントプロキシーを動的に構築するのに使用されるメタデータ (Java リフレクションおよび JAX-RS アノテーションを介して) にのみ使用されます。

ヘッダーの指定

以下のように、jaxrs:headers 子要素を使用して、HTTP ヘッダーをクライアントプロキシーの呼び出しに追加できます。

<jaxrs:client id="restClient"
       address="http://localhost:8080/test/services/rest"
       serviceClass="org.apache.cxf.systest.jaxrs.BookStoreJaxrsJaxws"
       inheritHeaders="true">
       <jaxrs:headers>
           <entry key="Accept" value="text/xml"/>
       </jaxrs:headers>
</jaxrs:client>

18.2.2. jaxrs:client 属性

属性

表18.3「JAX-RS Client Endpoint 属性」jaxrs:client 要素で利用可能な属性を説明します。

表18.3 JAX-RS Client Endpoint 属性

属性説明

address

コンシューマーが要求を行うエンドポイントの HTTP アドレスを指定します。この値は、コントラクトで設定された値を上書きします。

bindingId

コンシューマーが使用するメッセージバインディングの ID を指定します。有効なバインディング ID のリストは、23章Apache CXF バインディング ID に提供されています。

bus

エンドポイントを管理するバスを設定する Spring Bean の ID を指定します。

inheritHeaders

このプロキシーからサブリソースプロキシーが作成された場合に、このプロキシーに設定されたヘッダーを継承するかどうかを指定します。デフォルトは false です。

username

単純なユーザー名/パスワード認証に使用されるユーザー名を指定します。

password

単純なユーザー名/パスワード認証に使用されるパスワードを指定します。

modelRef

モデルスキーマをクラスパスリソースとして指定します (例: classpath:/path/to/model.xml 形式の URL)。JAX-RS モデルスキーマを定義する方法の詳細については、「モデルスキーマでの REST サービスの定義」 を参照してください。

serviceClass

サービスインターフェイスまたはリソースクラス (@PATH によりアノテーションが付けられる) の名前を指定し、JAX-RS サーバー実装から再利用します。この場合、指定されたクラスは直接呼び出され ません (実際にはサーバークラスです)。指定されたクラスは、クライアントプロキシーを動的に構築するのに使用されるメタデータ (Java リフレクションおよび JAX-RS アノテーションを介して) にのみ使用されます。

serviceName

JMS トランスポートが使用される特別なケースの JAX-RS エンドポイントのサービス QName を指定します (ns:name の形式を使用)。詳細は、「JMS トランスポートの使用」 を参照してください。

threadSafe

クライアントプロキシーがスレッドセーフかどうかを指定します。デフォルトは false です。

transportId

(HTTP の代わりに) 非標準のトランスポート層を選択する場合。特に、このプロパティーを http://cxf.apache.org/transports/jms に設定すると、JMS トランスポートを選択できます。詳細は、「JMS トランスポートの使用」 を参照してください。

abstract

(Spring のみ) Bean が抽象 Bean であるかどうかを指定します。抽象 Bean は、具体的な Bean 定義の親として機能し、インスタンス化されません。デフォルトは false です。これを true に設定すると、Bean ファクトリーが Bean をインスタンス化しないように指示します。

depends-on

(Spring のみ) エンドポイントがインスタンス化される前にインスタンス化されたかどうかに依存する Bean の一覧を指定します。

18.2.3. jaxrs:client 子要素

子要素

表18.4「JAX-RS Client Endpoint ポイントの子要素」jaxrs:client 要素の子要素をまとめます。

表18.4 JAX-RS Client Endpoint ポイントの子要素

要素説明

jaxrs:executor

 

jaxrs:features

Apache CXF の高度な機能を設定する Bean のリストを指定します。Bean 参照のリストまたは埋め込み Bean のリストのいずれかを提供できます。

jaxrs:binding

使用されていません。

jaxrs:dataBinding

エンドポイントで使用されるデータバインディングを実装するクラスを指定します。これは、埋め込み Bean 定義を使用して指定されます。詳細は、「データバインディングの指定」 を参照してください。

jaxrs:inInterceptors

インバウンド応答を処理するインターセプターのリストを指定します。詳細は、パートVII「Apache CXF インターセプターの開発」 を参照してください。

jaxrs:inFaultInterceptors

インバウンド障害メッセージを処理するインターセプターのリストを指定します。詳細は、パートVII「Apache CXF インターセプターの開発」 を参照してください。

jaxrs:outInterceptors

アウトバウンド要求を処理するインターセプターのリストを指定します。詳細は、パートVII「Apache CXF インターセプターの開発」 を参照してください。

jaxrs:outFaultInterceptors

アウトバウンド障害メッセージを処理するインターセプターのリストを指定します。詳細は、パートVII「Apache CXF インターセプターの開発」 を参照してください。

jaxrs:properties

エンドポイントに渡されるプロパティーのマップを指定します。

jaxrs:providers

1 つ以上のカスタム JAX-RS プロバイダーをこのエンドポイントに登録できます。この要素の子は、JAX-RS プロバイダーのインスタンス (bean 要素) または JAX-RS ルートリソースへの参照 (ref 要素) です。

jaxrs:modelBeans

1 つまたは複数の org.apache.cxf.jaxrs.model.UserResource Bean への参照のリストで設定されます。この参照はリソースモデルの基本要素です (jaxrs:resource 要素に対応)。詳細は、「モデルスキーマでの REST サービスの定義」 を参照してください。

jaxrs:model

このエンドポイントに直接リソースモデルを定義します (つまり、jaxrs:model 要素には 1 つまたは複数の jaxrs:resource 要素を含めることができます)。詳細は、「モデルスキーマでの REST サービスの定義」 を参照してください。

jaxrs:headers

送信メッセージのヘッダーを設定するために使用されます。詳細は、「ヘッダーの指定」 を参照してください。

jaxrs:schemaLocations

XML メッセージの内容の検証に使用される 1 つ以上の XML スキーマを指定します。この要素には、1 つまたは複数の jaxrs:schemaLocation 要素を含めることができます。各要素は、XML スキーマファイルの場所を指定します (通常は classpath URL として)。詳細は、「スキーマ検証」 を参照してください。