プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle WebLogic Server RESTful Webサービスの開発と保護
12c (12.2.1.3.0)
E90341-02
目次へ移動
目次

前
次

1 RESTful Webサービスの概要

RESTful Webサービスは、Java API for RESTful Web Services (JAX-RS)を使用し、Representational State Transfer (REST)アーキテクチャ・スタイルに従って開発するJava EE Webサービスです。

RESTアーキテクチャ・スタイルの概要

RESTとは、Simple Object Access Protocol (SOAP)のように追加のメッセージ層を使用することなく、HTTPなどの標準化されたインタフェースでデータを転送するためのシンプルなインタフェースを記述したものです。RESTはアーキテクチャ・スタイルであり、ツールキットではありません。リソースまたは特定の情報のソース(データおよび機能)として表示される、ステートレスなサービスを作成するための設計ルールのセットを提供します。各リソースは一意のURI (Uniform Resource Identifier)で識別されます。

クライアントはURI、標準化されたメソッドの固定セットを使用してリソースにアクセスし、リソースの表現が戻されます。リソースの表現は、一般的にリソースの現在または意図された状態を取得するドキュメントです。クライアントは、新しいリソース表現を受け取るたびに転送状態に設定されます。

表1-1に、アプリケーションがRESTfulだと見なされるために従う必要のある、RESTアーキテクチャ・スタイルにより定義された制約のセットを定義します。

表1-1 RESTアーキテクチャ・スタイルの制約

制約 説明

アドレス可能度

URI (Uniform Resource Identifier)を使用してすべてのリソースを識別します。英語では、URIは名詞と同じです。

共通インタフェース

HTTPメソッド(GET、POST、PUT、DELETE)などの共通インタフェースを使用して、リソースへのアクセスを可能にします。英語の類推を適用して、これらのメソッドは動詞と見なされ、名前付けされたリソースに適用できるアクションを説明します。

クライアント・サーバー・アーキテクチャ

クライアントとサーバーを、インタフェース要件とデータ・ストレージ要件とに分割します。このアーキテクチャは、サーバー・コンポーネントを簡略化することで、複数のプラットフォーム間でのユーザー・インタフェースの移植性と拡張性を高めます。

ステートレスな相互作用

ステートレスな通信プロトコルを使用します。通常はHypertext Transport Protocol (HTTP)です。すべてのリクエストは、特定のリクエストに必要なすべての情報を含む必要があります。セッション状態はクライアントにのみ保存されます。

この相互作用のスタイルにより、次のことが向上します。

  • 可視性—1つのリクエストでリクエストのすべての詳細が提供されます。

  • 信頼性—部分的な障害からの回復を容易にします。

  • 拡張性—状態を保存する必要がないので、サーバーは迅速にリソースを解放できます。

キャッシュ可能

クライアントのレスポンスのキャッシングを可能にします。レスポンスはキャッシュ可能かキャッシュ不可能かに識別される必要があります。キャッシングにより、一部の相互作用は必要なくなり、効率性、拡張性、および認識されるパフォーマンスが向上します。

階層化システム

クライアントがエンド・サーバーに直接接続するのではなく中間サーバーに接続できるようにします(クライアントは認識しません)。中間サーバーの使用は、ロード・バランシングと共有キャッシングを提供することで、システムの拡張性を向上させます。

RESTful Webサービスとは

RESTful Webサービスは、REST原則に従って構築され、それによりWebで適切に動作するように設計されたサービスです。

RESTful Webサービスは、表1-1に定義されたアーキテクチャ・スタイル制約に従います。通常、RESTful WebサービスはHTTPプロトコル上に構築され、GET、POST、PUT、DELETEなどの共通HTTPメソッドにマップされる操作を実装し、リソースをそれぞれ取得、作成、更新、削除します。

WebLogic ServerでのRESTful Webサービスの開発の標準サポート

JAX-RSでは、RESTアーキテクチャ・スタイルに従ったWebサービスの作成をサポートします。JAX-RSではアノテーションを使用して、RESTful Webサービスの開発を簡略化します。アノテーションをWebサービスに追加するだけで、リソースと、そのリソースで実行できるアクションを定義できます。 JAX-RSはJava EE 7 Full Profileの一部で、Contexts and Dependency Injection (CDI) for the Java EE Platform (CDI)、Enterprise JavaBeans (EJB)テクノロジおよびJavaサーブレット・テクノロジと統合されています。

WebLogic Serverでは、次のJAX-RS APIおよび参照実装(RI)をサポートしています。

  • JAX-RS 2.0 Rev a

  • Jersey 2.22.4

注意:

Jersey 2.x (JAX-RS 2.0 RI)のサポートが今回のリリースのWebLogic Serverでデフォルトで提供されています。共有ライブラリとしての登録は不要になりました。

Jersey 1.xのサーバー側APIはサポートされなくなりました。かわりに、対応する標準のJAX-RS 2.0またはJersey 2.x APIを使用する必要があります。Jersey 1.xクライアントAPIは非推奨になりました。JAX-RS 2.0クライアントAPIを使用するように、RESTfulクライアント・アプリケーションを早急に更新することをお薦めします。

Jersey 2.x (JAX-RS 2.0 RI)には次の機能が含まれます。

  • Jersey

  • JAX-RS API

  • JSON処理およびストリーミング

表1-2に、Jersey 2.x (JAX-RS 2.0 RI)とともに提供される主な機能を示します。

表1-2 Jersey 2.x (JAX-RS 2.0 RI)の主な機能

主な機能 説明

クライアントAPI

RESTful Webサービスと標準的な方法で通信します。Client APIにより、HTTPプロトコル経由で公開されるWebサービスの使用が容易になり、既存の安定したクライアント側のHTTPコネクタ実装を利用するクライアント側のポータブル・ソリューションを開発者が簡潔に効率よく実装できるようになります。

詳細は、次を参照してください。

非同期通信

リクエストを非同期に呼び出して処理します。

詳細は、次を参照してください。

フィルタおよびインターセプタ

フィルタを使用して、ヘッダー情報など、インバウンドおよびアウトバウンドのリクエストとレスポンスを変更します。インターセプタを使用して、エンティティの入力ストリームおよび出力ストリームを変更します。フィルタおよびインターセプタは、クライアント側とサーバー側の両方で使用できます。

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

JAX-RSとサンプルの詳細は、「RESTful Webサービスの詳細」を参照してください

RESTful Webサービスの実装のロードマップ

RESTful Webサービスおよびクライアントを開発、パッケージ化、デプロイ、保護、および監視するための共通タスクのロードマップを確認します。これらのタスクの一覧は、表1-3にあります。

表1-3 RESTful Webサービスおよびクライアントの実装のためのロードマップ

タスク 詳細情報

RESTful Webサービスを開発します。

RESTful Webサービスの開発

RESTful Webサービスを呼び出すクライアントを開発します。

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

RESTful Webサービスをパッケージ化およびデプロイします。

RESTful Webサービスを保護します。

RESTful Webサービスをテストします。

RESTful Webサービスのテスト

RESTful Webサービスを監視します。

RESTful Webサービスとクライアントの監視

(オプション)既存のアプリケーションをJersey 1.xから2.xに移行します。

Jersey 2.22 User Guide「Migration Guide」

RESTful Webサービスの詳細

RESTful Webサービスの追加の詳細は、Project JerseyのCommunity Wiki (jcp.org)、JSR-339 JAX-RS 2.0 Specificationなどのリソースを参照してください。表1-4に、それらのリソースを示します。

表1-4 詳細に関するリソース

リソース リンク

Jerseyユーザー・ガイド

Jersey 2.22ユーザー・ガイド

Jersey API Javadoc

Jersey 2.22 APIドキュメント

JerseyプロジェクトのWikiコミュニティ

https://jersey.github.io/

JSR-339 JAX-RS 2.0仕様

https://jcp.org/en/jsr/detail?id=339

JAX-RS API Javadoc

https://jax-rs-spec.java.net/nonav/2.0-rev-a/apidocs/index.html

JAX-RSプロジェクト

https://jax-rs-spec.java.net/

RESTful Webサービス(JAX-RS)サンプル

Oracle WebLogic Serverの理解のサンプル・アプリケーションとコード例

Java EE 7チュートリアル-JAX-RSを使用したRESTful Webサービスの構築

http://docs.oracle.com/javaee/7/tutorial/jaxrs.htm

『Architectural Styles and the Design of Network-based Software Architectures』 (Roy Fieldingの論文)の「Representational State Transfer (REST)」

http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm