ヘッダーをスキップ
Oracle Fusion Middleware Oracle WebLogic Server RESTful Webサービスの開発
12cリリース1 (12.1.1)
B65960-02
  目次へ移動
目次

前
 
次
 

1 RESTful Webサービスの概要

この章では、Java API for RESTful Web Services (JAX-RS)を使用して、Representational State Transfer (REST)アーキテクチャ・スタイルに従ったWebLogic Webサービスの開発の概要について説明します。

この章の内容は以下のとおりです。

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

RESTとは、SOAP (Simple Object Access Protocol)のように追加のメッセージ層を使用することなく、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 6 Full Profile の一部で、Contexts and Dependency Injection (CDI) for the Java EE Platform (CDI)、Enterprise JavaBeans (EJB)テクノロジおよびJavaサーブレット・テクノロジと統合されています。

WebLogic Serverは、JSR-311 JAX-RS 1.1仕様(http://jcp.org/en/jsr/summary?id=311で定義)の製品レベル品質を実装したJersey 1.9 JAX-RS Reference Implementation (RI)をサポートしています。必要に応じて、Jersey JAX-RS RIのより新しいバージョンを使用できます。付録A「Jersey JAX-RS RIのバージョンの更新」を参照してください。

Jersey 1.9 JAX-RS RIバンドルには次の機能が含まれます。

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

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

次の表に、WebLogic Serverを使用して、RESTful Webサービスおよびクライアントを開発、パッケージ化、デプロイ、呼び出し、および監視するための共通タスクのロードマップを示します。

表1-2 RESTful Webサービスの実装のロードマップ

参照する章 内容

第2章「RESTful Webサービスの開発」


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

第3章「RESTful Webサービスのパッケージ化とデプロイ」


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

第4章「RESTful Webサービス・クライアントの開発」


JerseyクライアントAPIを使用して、RESTful Webサービスを呼び出すクライアントを開発します。

第5章「RESTful Webサービスの保護」


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

第6章「RESTful Webサービスの監視」


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

付録A「Jersey JAX-RS RIのバージョンの更新」


RESTful Webサービス・アプリケーションで使用するJersey JAX-RS Reference Implementation (RI)のバージョンを更新します。


RESTful WebサービスのOracle WebLogic Server 10.3.xから12.1.xへのアップグレード

Oracle WebLogic Server 11gリリース1 (10.3.x)環境で構築したRESTful Webサービスを、Oracle WebLogic Server 12cリリース1 (12.1.x)環境で実行するようにアップグレードできます。詳細な手順は、『Oracle WebLogic Serverアップグレード・ガイド』の10.3.x RESTful Webサービス(JAX-RS)の12.1.xへのアップグレードに関する項を参照してください。

RESTful Webサービスの詳細

表1-2に、RESTful Webサービスの詳細に関するリソースのリストを示します。

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

リソース リンク

『Jersey 1.9 User Guide』

http://jersey.java.net/nonav/documentation/1.9/user-guide.html

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

『Oracle WebLogic Serverの理解』のサンプル・アプリケーションとコード例に関する項

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

http://download.oracle.com/javaee/6/tutorial/doc/giepu.html

Jerseyサイト

http://jersey.java.net

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

http://wikis.sun.com/display/Jersey/Main

Jersey 1.9 API Javadoc

http://jersey.java.net/nonav/apidocs/1.9/jersey/overview-summary.html

JSR-311 JAX-RS仕様

http://jcp.org/en/jsr/summary?id=311

JSR-311 JAX-RSプロジェクト

http://jsr311.java.net/

JSR-311 JAX-RS API Javadoc

http://jsr311.java.net/nonav/javadoc/index.html

『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