3 RESTful Webサービス・クライアントの開発

Jersey 2.x Java API for RESTful Web Services (JAX-RS) 2.0参照実装(RI)を使用して、Representational State Transfer (REST)アーキテクチャ・スタイルに従ったJava EE Webサービス・クライアントを開発できます。

ノート:

Jersey 1.18 (JAX-RS 1.1RI)クライアントAPIのサポートは、今回のリリースのWebLogic Serverで非推奨になりましたが、下位互換性のために維持されています。Jersey 1.18 (JAX-RS 1.1 RI)を使用したRESTful Webサービス・クライアントの開発を参照してください

Jersey 2.x (JAX-RS 2.0 RI)クライアントAPIを使用するように(この章の説明を参照)、RESTfulクライアント・アプリケーションを早急に更新することをお薦めします。

この章の内容は次のとおりです:

RESTful Webサービス・クライアントを開発するタスクの概要

RESTful Webサービス・クライアントの開発に必要なタスクには、クライアント・クラスの作成、Webリソースのターゲティング、ターゲットでのリソースの識別などが含まれています。次の表に、Jersey 2.x (JAX-RS 2.0 RI)を使用してRESTful Webサービス・クライアントを開発する場合に必要なタスクの一部の概要を示します。

表3-1 RESTful Webサービス・クライアントを開発するタスクの概要

タスク 詳細情報

javax.ws.rs.client.Clientクラスのインスタンスを作成および構成します。

Jersey 2.22 User GuideCreating and configuring a Client instance

Webリソースをターゲット指定します。

Jersey 2.22 User Guide「Targeting a web resource」

WebTargetでリソースを指定します。

Jersey 2.22 User GuideWebターゲットでのリソースの特定に関する項

HTTPリクエストを呼び出します。

Jersey 2.22 User Guide「Invoking a HTTP request」

Oracle JDeveloperを使用したRESTful Webサービス・クライアントの開発の詳細は、Oracle JDeveloperによるアプリケーションの開発RESTful Webサービスおよびクライアントの作成を参照してください。

RESTful Webサービス・クライアントの例

RESTful Webサービス・クライアントの作成方法についてさらに学習するには、例を参照してください。次の例では、RESTful Webサービス・クライアントを使用して、例2-1で定義されたRESTful Webサービスを呼び出す方法を示します。この例の内容は次のとおりです。
  • Clientインスタンスが作成され、WebTargetが定義されます。

  • Webリソースにアクセスするためのリソース・パスが定義されます。

  • Invocation.Builderを使用してgetリクエストがリソースに送信されます。

  • レスポンスは文字列値で返されます。

例3-1 Jersey 2.x (JAX-RS 2.0 RI)を使用した簡単なRESTful Webサービス・クライアント

package samples.helloworld.client;
...
import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.Invocation;
import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
 
public class helloWorldClient{
    public static void main(String[] args) {
        Client client = ClientBuilder.newClient();
        WebTarget target = client.target("http://localhost:7101/restservice");
        WebTarget resourceWebTarget;
        resourceWebTarget = target.path("resources/helloworld");
        Invocation.Builder invocationBuilder;
        invocationBuilder = resourceWebTarget.request(
          MediaType.TEXT_PLAIN_TYPE);
        Response response = invocationBuilder.get();
        System.out.println(response.getStatus());
        System.out.println(response.readEntity(String.class));
...
    }
...
}

詳細は、Jersey 2.22 User Guide「Client API」を参照してください。

スタンドアロン・クライアントからのRESTful Webサービスの呼出し

Oracle Fusion MiddlewareまたはWebLogic Serverがローカルにインストールされていない環境からRESTful Webサービスを呼び出す場合、CLASSPATHにOracle Fusion MiddlewareまたはWebLogic Serverクラスの完全なセットがなくても、スタンドアロン・クライアントJARファイルを使用してWebサービスを呼び出すことができます。

スタンドアロンRESTful Webサービス・クライアントJARは、基本的なJAX-RSのクライアント側の機能およびOWSMセキュリティ・ポリシーをサポートしています。

クライアント・アプリケーションでスタンドアロンのRESTful Webサービス・クライアントJARファイルを使用するには、次のステップを実行します。

  1. Oracle JDeveloperなど好みのIDEを使用して、Java SEクライアントを作成します。Oracle JDeveloperによるアプリケーションの開発Webサービスの開発と保護に関する項を参照してください。

  2. ファイルORACLE_HOME/oracle_common/modules/clients/com.oracle.jersey.fmw.client.jarを、Oracle Fusion Middlewareをホストするコンピュータからクライアント・コンピュータにコピーします。ORACLE_HOMEは、Oracle Fusion Middlewareのインストール時にOracleホームに指定したディレクトリです。

    たとえば、クライアント・アプリケーションで使用している他のクラスが格納されているディレクトリにファイルをコピーします。

  3. JARファイルをCLASSPATHに追加します。

    ノート:

    CLASSPATHには、スタンドアロン・クライアントJARファイルで使用されるAntクラスのサブセットを含むJARファイル(ant.jar)が確実に格納されるようにしてください。このJARファイルは通常、Antディストリビューションのlibディレクトリ内にあります。

  4. Oracle Web Services Manager (OWSM)ポリシーの環境を構成します。このステップは省略可能で、RESTful Webサービス・クライアントにOWSMセキュリティ・ポリシーをアタッチする場合にのみ必要です。

    必要な構成ステップは、アタッチされるポリシーのタイプによって異なります。以下に例を示します。その他の構成要件については、『Oracle Platform Security Servicesによるアプリケーションの保護』OPSSを使用するためのJava SEアプリケーションの構成に関する項を参照してください。

    例: 基本認証

    たとえば、oracle/wss_http_token_client_policyセキュリティ・ポリシーを使用して基本認証をサポートするには、次のステップを実行します。

    1. jps-config-jse.xmlファイルおよびaudit-store.xmlファイルを、domain_home/config/fmwconfigディレクトリ(domain_homeはドメインの名前と場所)から、RESTfulクライアントにアクセス可能な場所にコピーします。

    2. ステップ2でファイルをコピーした場所にウォレット(cwallet.sso)を作成します。このウォレットには、oracle.wsm.securityという名前のマップと、クライアント・アプリケーションが使用する資格証明キー名(たとえばweblogic-csf-key)を定義します。

      ファイルcwallet.ssoの場所は、構成ファイルjps-config-jse.xmlの要素<serviceInstance>で指定します。Oracle Platform Security Servicesによるアプリケーションの保護で、ファイル資格証明ストアの使用を参照してください。

    3. Javaコマンド・ラインで次のプロパティを渡して、ステップ1でコピーしたJPS構成ファイルを定義します。

      -Doracle.security.jps.config=<pathToConfigFile>
      

      Oracle Platform Security Servicesによるアプリケーションの保護で、Java SEアプリケーションのセキュリティについてを参照してください。

    例: SSL

    たとえば、SSLポリシーをサポートするには、次のステップを実行します。

    1. jps-config-jse.xmlファイルおよびaudit-store.xmlファイルを、domain_home/config/fmwconfigディレクトリ(domain_homeはドメインの名前と場所)から、RESTfulクライアントにアクセス可能な場所にコピーします。

    2. Javaコマンド・ラインで次のプロパティを渡して、ステップ1でコピーしたJPS構成ファイルを定義します。

      ステップ1でコピーしたJPS構成ファイルを定義する:

      -Doracle.security.jps.config=<pathToConfigFile>
      

      Oracle Platform Security Servicesによるアプリケーションの保護で、Java SEアプリケーションのセキュリティについてを参照してください。

      信頼できる証明書を含むトラスト・ストアを定義する:

      -Djavax.net.ssl.trustStore=<trustStore>
      

      Oracle Fusion Middlewareの管理で、LDAPセキュリティ・ストアへの一方向SSLの設定を参照してください。

      トラスト・ストアのパスワードを定義する:

      -Djavax.net.ssl.trustStorePassword=<password>