49.5. クライアントエンドポイントの設定
概要
機能およびプロバイダーの登録および設定により、ベース javax.ws.rs.client.Client
オブジェクトの機能を拡張できます。
例
以下の例は、ロギング機能、カスタムエンティティープロバイダー、および prettyLogging
プロパティーを true
に設定するよう設定されたクライアントを示しています。
// Java import javax.ws.rs.client.ClientBuilder; import javax.ws.rs.client.Client; import org.apache.cxf.feature.LoggingFeature; ... Client client = ClientBuilder.newClient(); client.register(LoggingFeature.class) .register(MyCustomEntityProvider.class) .property("LoggingFeature.prettyLogging","true");
オブジェクトを登録する設定可能な API
Client
クラスはオブジェクトの登録用に Configurable
API をサポートします。これにより、register
メソッドの複数のバリアントが提供されます。ほとんどの場合に、以下の例のようにクラスまたはオブジェクトインスタンスを登録します。
client.register(LoggingFeature.class) client.register(new LoggingFeature())
register
バリアントの詳細は、Configurable
に関する参考ドキュメントを参照してください。
クライアントで設定できる内容
クライアントエンドポイントの以下の機能を設定できます。
- 機能
- プロバイダー
- プロパティー
- フィルター
- インターセプター
機能
javax.ws.rs.core.Feature
は事実上、追加の機能を JAX-RS クライアントに追加するプラグインです。多くの場合に、機能は、必要な機能を提供するためのインターセプターを 1 つ以上インストールします。
プロバイダー
プロバイダーは、マッピング機能を提供する特定の種類のクライアントプラグインです。JAX-RS 2.0 仕様は、以下のようなプロバイダーを定義します。
- エンティティープロバイダー
- エンティティープロバイダー は、特定のメディアタイプ間のマッピング機能を提供します。詳細は、「要求と応答の解析」 を参照してください。
- 例外マッピングプロバイダー
-
例外マッピングプロバイダー は、チェックされたランタイム例外を
Response
のインスタンスにマッピングします。 - コンテキストプロバイダー
- コンテキストプロバイダーはサーバー側で使用され、リソースクラスや他のサービスプロバイダーのコンテキストを提供します。
フィルター
JAX-RS 2.0 フィルターは、メッセージ処理パイプラインのさまざまなポイント (拡張ポイント) の URI、ヘッダー、およびその他のコンテキストデータへのアクセスを可能にするプラグインです。詳細は、61章JAX-RS 2.0 フィルターおよびインターセプター を参照してください。
インターセプター
JAX-RS 2.0 インターセプターは、読み取りまたは書き込み時に要求または応答のメッセージボディーへのアクセスを許可するプラグインです。詳細は、61章JAX-RS 2.0 フィルターおよびインターセプター を参照してください。
プロパティー
クライアントに 1 つ以上のプロパティーを設定すると、登録された機能または登録されたプロバイダーの設定をカスタマイズできます。
その他の設定可能なタイプ
javax.ws.rs.client.Client
(および javax.ws.rs.client.ClientBuilder
) オブジェクトだけでなく、WebTarget
オブジェクトも設定することができます。WebTarget
オブジェクトの設定を変更すると、基盤のクライアント設定はディープコピーされ、新しい WebTarget
設定が指定されます。そのため、元の Client
オブジェクトの設定を変更せずに、WebTarget
オブジェクトの設定を変更することができます。