この章では、Java API for RESTful Web Services (JAX-RS)を使用して、Representational State Transfer (REST)アーキテクチャ・スタイルに従ったWebLogic Webサービスの開発の概要について説明します。
この章の内容は以下のとおりです。
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)です。すべてのリクエストは、特定のリクエストに必要なすべての情報を含む必要があります。セッション状態はクライアントにのみ保存されます。 この相互作用のスタイルにより、次のことが向上します。
|
キャッシュ可能 |
クライアントのレスポンスのキャッシングを可能にします。レスポンスはキャッシュ可能かキャッシュ不可能かに識別される必要があります。キャッシングにより、一部の相互作用は必要なくなり、効率性、拡張性、および認識されるパフォーマンスが向上します。 |
階層化システム |
クライアントがエンド・サーバーに直接接続するのではなく中間サーバーに接続できるようにします(クライアントは認識しません)。中間サーバーの使用は、ロード・バランシングと共有キャッシングを提供することで、システムの拡張性を向上させます。 |
RESTful Webサービスは、REST原則に従って構築され、それによりWebで適切に動作するように設計されたサービスです。
RESTful Webサービスは、表1-1に定義されたアーキテクチャ・スタイル制約に従います。通常、RESTful WebサービスはHTTPプロトコル上に構築され、GET、POST、PUT、DELETEなどの共通HTTPメソッドにマップされる操作を実装し、リソースをそれぞれ作成、取得、更新、削除します。
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バンドルには次の機能が含まれます。
Jersey
JAX-RS API
JSON処理とストリーミング
JAX-RSとサンプルの詳細は、「RESTful Webサービスの詳細」を参照してください。
次の表に、WebLogic Serverを使用して、RESTful Webサービスおよびクライアントを開発、パッケージ化、デプロイ、呼び出し、および監視するための共通タスクのロードマップを示します。
表1-2 RESTful Webサービスの実装のロードマップ
参照する章 | 内容 |
---|---|
|
RESTful Webサービスを開発します。 |
第3章「RESTful Webサービスのパッケージ化とデプロイ」 |
RESTful Webサービスをパッケージ化およびとデプロイします。 |
第4章「RESTful Webサービス・クライアントの開発」 |
JerseyクライアントAPIを使用して、RESTful Webサービスを呼び出すクライアントを開発します。 |
|
RESTful Webサービスを保護します。 |
|
RESTful Webサービスを監視します。 |
付録A「Jersey JAX-RS RIのバージョンの更新」 |
RESTful Webサービス・アプリケーションで使用するJersey JAX-RS Reference Implementation (RI)のバージョンを更新します。 |
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へのアップグレードに関する項を参照してください。
表1-2に、RESTful Webサービスの詳細に関するリソースのリストを示します。
表1-3 詳細に関するリソース
リソース | リンク |
---|---|
『Jersey 1.9 User Guide』 |
|
RESTful Webサービス(JAX-RS)サンプル |
『Oracle WebLogic Serverの理解』のサンプル・アプリケーションとコード例に関する項 |
Java EE 6チュートリアル-JAX-RSを使用したRESTful Webサービスの構築 |
|
Jerseyサイト |
|
JerseyプロジェクトのWikiコミュニティ |
|
Jersey 1.9 API Javadoc |
|
JSR-311 JAX-RS仕様 |
|
JSR-311 JAX-RSプロジェクト |
|
JSR-311 JAX-RS API Javadoc |
|
『Architectural Styles and the Design of Network-based Software Architectures』 (Roy Fieldingの論文)の「Representational State Transfer (REST)」 |
|