Apache Wink REST クライアントを使用するクライアントの実装

Apache Wink REST クライアントを使用して、要求を 送信し、RESTful サービスからの応答を処理することができます。このクライアント API を Java™ プログラム内で使用して、Web サービスと通信することができます。

このタスクについて

デフォルトでは、Apache Wink クライアントは、 要求の発行および応答の処理のために、Java ランタイム 環境から java.net.HttpURLConnection クラスを使用します。Apache Wink クライアントは、 基礎となるクライアント・トランスポートとして Apache HttpClient 4.0 を 使用することもできます。

また、要求エンティティーの直列化または 応答エンティティーの非直列化のために JAX-RS エンティティー・プロバイダーを利用することもできます。クライアントと一緒に、 JAX-RS サーバー・サイド・サービス内で使用される標準 JAX-RS プロバイダーが提供されています。

Apache Wink REST クライアント はプログラムで構成するか、または、Java Virtual Machine (JVM) プロパティーを設定することによって構成できます。

Apache Wink REST クライアント を実装するには、まず最初に org.apache.wink.client.ClientConfig オブジェクトを 作成する必要があり、次に、このオブジェクトが org.apache.wink.client.RestClient を作成するために使用されます。プログラムで RestClient オブジェクト の構成設定を変更するか、または、 JVM プロパティーを使用してデフォルト ClientConfig オブジェクト値を 変更することができます。

RestClient オブジェクトの構成設定を プログラムで構成するには、ClientConfig オブジェクトの public メソッドを 開始します。
注: ClientConfig オブジェクトを使用 して RestClient オブジェクトが作成された後は、その ClientConfig オブジェクトは もう変更できません。変更しようとすると、org.apache.wink.client.ClientConfigException エラー・メッセージ が出されます。
代替方法として、 JVM プロパティーを使用してデフォルト ClientConfig オブジェクト値を変更することによって、RestClient オブジェクト の構成設定を構成することができます。 デフォルト ClientConfig オブジェクト値を変更するには、以下の JVM プロパティーを 使用します。
wink.client.readTimeout

このプロパティーは、RestClient オブジェクト が要求への応答をどれだけの間 (ミリ秒) 待機すればタイムアウトになるのかを指定します。値 0 は、クライアントが無限に待機して、タイムアウトにならないことを意味します。

デフォルト値は 60,000 ミリ秒です。

wink.client.connectTimeout

このプロパティーは、RestClient オブジェクトが、ターゲット・リソースに接続しようとするときに、 どれだけの間 (ミリ秒) 待機すればタイムアウトになるのかを指定します。値 0 は、クライアントが無限に待機して、タイムアウトにならないことを意味します。

デフォルト値は 60,000 ミリ秒です。

JVM プロパティーを使用して 指定する RestClient オブジェクトの値は、すべてプログラムで変更 することができます。プログラムで設定する値は、JVM プロパティー値に 優先します。

手順

  1. org.apache.wink.client.ClientConfig オブジェクトを作成します。
    以下のコード・スニペットは、 org.apache.wink.client.ClientConfig オブジェクトの作成方法を示します。
    org.apache.wink.client.ClientConfig clientConfig = new org.apache.wink.client.ClientConfig();
    .
    基礎となるトランスポートとして Apache HTTP クライアントを 使用する場合は、代わりに org.apache.wink.client.ApacheHttpClientConfig オブジェクトを 作成し、使用してください。以下のコード・スニペットは、 org.apache.wink.client.ApacheHttpClientConfig オブジェクトの作成方法を示します。
    org.apache.wink.client.ClientConfig clientConfig = new org.apache.wink.client.ApacheHttpClientConfig();
  2. (オプション) RestClient オブジェクトに使用したいデフォルト ClientConfig オブジェクト値を 変更します。
    • オプションで、RestClient オブジェクトのデフォルト構成設定を プログラムで変更できます。RestClient オブジェクトの 構成設定をプログラムで指定するには、ClientConfig オブジェクト の public メソッドを開始します。以下に例を示します。
      clientConfig.connectTimeout(30000);
      clientConfig.readTimeout(30000);
    • Thin Client for JAX-RS をスタンドアロンの非管理対象クライアント・ランタイム環境で使用している場合、 オプションで、JVM プロパティーを使用して RestClient オブジェクトの構成設定を変更できます。シン・クライアントが稼働している JVM でカスタム JVM プロパティーを 設定してください。
    • Thin Client for JAX-RS をスタンドアロン・クライアント・ランタイム環境として使用していない が、アプリケーション・サーバー上でのインストールを目的としたアプリケーション内で RestClient オブジェクトを 使用している場合、オプションで、JVM プロパティーを使用 して RestClient オブジェクトの構成設定を変更できます。アプリケーション・サーバー上にインストールされたアプリケーション内で 実行している REST クライアント・コード用の管理コンソールを使用して、カスタム JVM プロパティーを設定 してください。管理コンソールを使用してこれらのカスタム JVM プロパティーを設定する方法について詳しくは、Java 仮想 マシンのカスタム・プロパティーに関する説明を参照してください。
  3. (オプション) カスタム・エンティティー・プロバイダーを使用する場合、 そのエンティティー・プロバイダーをクライアント構成を使用して追加します。
    org.apache.wink.client.ClientConfig clientConfig = new org.apache.wink.client.ClientConfig();
    
    javax.ws.rs.core.Application app = new javax.ws.rs.core.Application() {
           public Set<Class<?>> getClasses() {
               Set<Class<?>> classes = new HashSet<Class<?>>();
               classes.add(MyCustomEntityProvider.class);
               return classes;
           }
    };
    clientConfig.applications(app);
  4. クライアント構成を使用して org.apache.wink.client.RestClient オブジェクト を作成します。
    org.apache.wink.client.ClientConfig clientConfig = new org.apache.wink.client.ClientConfig();
    
    javax.ws.rs.core.Application app = new javax.ws.rs.core.Application() {
           public Set<Class<?>> getClasses() {
               Set<Class<?>> classes = new HashSet<Class<?>>();
               classes.add(MyCustomEntityProvider.class);
               return classes;
           }
    };
    clientConfig.applications(app);
    
    org.apache.wink.client.RestClient client = new org.apache.wink.client.RestClient(clientConfig);
  5. REST クライアントからの URI を使用して org.apache.wink.client.Resource オブジェクト を作成します。
    org.apache.wink.client.ClientConfig clientConfig = new org.apache.wink.client.ClientConfig();
    
    javax.ws.rs.core.Application app = new javax.ws.rs.core.Application() {
           public Set<Class<?>> getClasses() {
               Set<Class<?>> classes = new HashSet<Class<?>>();
               classes.add(MyCustomEntityProvider.class);
               return classes;
           }
    };
    clientConfig.applications(app);
    
    org.apache.wink.client.RestClient client = new org.apache.wink.client.RestClient(clientConfig);
    
    org.apache.wink.client.Resource resource = client.resource(“http://www.example.com/rest/api/book/123”);
  6. Resource オブジェクトでメソッドを呼び出すことによって、保留中の要求に 要求ヘッダーを追加できます。
    要求コンテンツをパラメーターとして使用して、post() などの Java メソッド を呼び出すことによって、要求を送信できます。次の 例では、Content-Type ヘッダー 値 text/plain および Accept ヘッダー 値 */* で HTTP POST 要求が行われます。
    org.apache.wink.client.ClientConfig clientConfig = new org.apache.wink.client.ClientConfig();
    
    javax.ws.rs.core.Application app = new javax.ws.rs.core.Application() {
           public Set<Class<?>> getClasses() {
               Set<Class<?>> classes = new HashSet<Class<?>>();
               classes.add(MyCustomEntityProvider.class);
               return classes;
           }
    };
    clientConfig.applications(app);
    
    org.apache.wink.client.RestClient client = new org.apache.wink.client.RestClient(clientConfig);
    
    org.apache.wink.client.Resource resource = client.resource(“http://www.example.com/rest/api/book/123”);
    
    ClientResponse response = resource.contentType(“text/plain”).accept(“*/*”).post(“The request body as a string”);
    ストリングを指定して resource.post("The request body as a string") オブジェクトを呼び出す代わりに、 有効な javax.ws.rs.ext.MessageBodyWriter オブジェクト のあるクラス (JAXB アノテーション付きクラス、byte[]、または、カスタム・エンティティー・プロバイダーを持つカスタム・クラスなど) を 持つ、他の任意のオブジェクトを使用できます。
  7. 状況コード、応答ヘッダー、または応答メッセージ本体を使用して、応答 を処理します。
    org.apache.wink.client.ClientConfig clientConfig = new org.apache.wink.client.ClientConfig();
    
    javax.ws.rs.core.Application app = new javax.ws.rs.core.Application() {
           public Set<Class<?>> getClasses() {
               Set<Class<?>> classes = new HashSet<Class<?>>();
               classes.add(MyCustomEntityProvider.class);
               return classes;
           }
    };
    clientConfig.applications(app);
    
    org.apache.wink.client.RestClient client = new org.apache.wink.client.RestClient(clientConfig);
    
    org.apache.wink.client.Resource resource = client.resource(“http://www.example.com/rest/api/book/123”);
    
    ClientResponse response = resource.contentType(“text/plain”).accept(“*/*”).post(“The request body as a string”);
        
    System.out.println(“The response code is: “ + response.getStatusCode());
    System.out.println(“The response message body is: “ + response.getEntity(String.class));
    String.class ファイルを指定して response.getEntity(String.class) オブジェクト を呼び出す代わりに、 有効な javax.ws.rs.ext.MessageBodyReader オブジェクトを持つ、他の任意のクラス (JAXB アノテーション付き クラス、byte[]、または、カスタム・エンティティー・プロバイダーを持つカスタム・クラスなど) を使用できます。
  8. (オプション) 基本認証セキュリティー・トークンを伝送するよう クライアントを構成します。 クライアントの基本認証を構成するために、 適切な HTTP ヘッダーを自身で管理することを選択することもできますが、 提供されている BasicAuthSecurityHandler ハンドラー・クラス を使用することができます。BasicAuthSecurityHandler クラスは、Wink クライアント・アプリケーション 内での基本認証の使用可能化を単純にします。基本 HTTP 認証を実行するのにセキュリティー・クライアント・ハンドラーを使用することについて詳しくは、Web コンテナー内での JAX-RS アプリケーションの保護に関する説明を参照してください。

タスクの結果

JAX-RS アプリケーションに要求を発行できる Apache Wink REST クライアントを使用する JAX-RS クライアントの実装が完了しました。


トピックのタイプを示すアイコン タスク・トピック



タイム・スタンプ・アイコン 最終更新: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twbs_jaxrs_impl_client_winkrestclient
ファイル名:twbs_jaxrs_impl_client_winkrestclient.html