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 オブジェクトの設定を変更することができます。