Oracle® Fusion Middleware Oracle WebLogic Server 12.1.3 RESTful Webサービスの開発と保護 12c (12.1.3) E57546-02 |
|
前 |
次 |
この章では、WebLogic Server 12.1.3内のJava API for RESTful Web Services (JAX-RS)を使用して、Representational State Transfer (REST)アーキテクチャ・スタイルに従ったJava EE Webサービスの開発の概要について説明します。
この章の内容は次のとおりです:
このマニュアルなどで見つかった見慣れない用語の定義は、「用語集」を参照してください。
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)です。すべてのリクエストは、特定のリクエストに必要なすべての情報を含む必要があります。セッション状態はクライアントにのみ保存されます。 この相互作用のスタイルにより、次のことが向上します。
|
キャッシュ可能 |
クライアントのレスポンスのキャッシングを可能にします。レスポンスはキャッシュ可能かキャッシュ不可能かに識別される必要があります。キャッシングにより、一部の相互作用は必要なくなり、効率性、拡張性、および認識されるパフォーマンスが向上します。 |
階層化システム |
クライアントがエンド・サーバーに直接接続するのではなく中間サーバーに接続できるようにします(クライアントは認識しません)。中間サーバーの使用は、ロード・バランシングと共有キャッシングを提供することで、システムの拡張性を向上させます。 |
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では、次のJAX-RS参照実装(RI)をサポートしています。
Jersey 1.18 (JAX-RS 1.1 RI) (デフォルト実装)
Jersey 2.5.1 (JAX-RS 2.0 RI) (登録が必要な共有ライブラリとして提供)
各Jersey JAX-RS RIバンドルには次の機能が含まれます。
Jersey
JAX-RS API
JSON処理およびストリーミング
JAX-RSとサンプルの詳細は、「RESTful Webサービスの詳細」を参照してください。
Jersey 1.18 (JAX-RS 1.1 RI)は、デフォルト実装であり、JSR-311 JAX-RS 1.1仕様(https://jcp.org/en/jsr/summary?id=311
で定義)の製品レベル品質を実装しています。
次の表に、Jersey 1.18 (JAX-RS 1.1 RI)を使用して、RESTful Webサービスおよびクライアントを開発、パッケージ化、デプロイ、保護、テストおよび監視するための共通タスクのロードマップを示します。
表1-2 Jersey 1.18 (JAX-RS 1.1 RI)を使用してRESTful Webサービスを実装するためのロードマップ
タスク | 詳細情報 |
---|---|
RESTful Webサービスを開発します。 |
|
JerseyクライアントAPIを使用して、RESTful Webサービスを呼び出すクライアントを開発します。 |
Jersey 1.18 (JAX-RS 1.1 RI)を使用したRESTful Webサービス・クライアントの開発 |
RESTful Webサービスをパッケージ化およびデプロイします。 |
|
RESTful Webサービスを保護します。 |
第6章「RESTful Webサービスとクライアントの保護」 |
RESTful Webサービスをテストします。 |
|
RESTful Webサービスを監視します。 |
第8章「RESTful Webサービスとクライアントの監視」 |
(オプション) RESTful Webサービス・アプリケーションで使用するJersey JAX-RS参照実装(RI)のバージョンを更新します。 |
第13845072章「Jersey 1.x JAX-RS 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へのアップグレードに関する項 |
WebLogic Serverには、Webアプリケーションとしてパッケージ化された事前構築済共有ライブラリが同梱されており、Jersey 2.5.1 (JAX-RS 2.0 RI)に基づいているアプリケーションの実行に必要です。Jersey 2.5.1 (JAX-RS 2.0 RI)の機能を利用するには、第2章「Jersey 2.5.1 (JAX-RS 2.0参照実装)の登録」の説明に従って、その共有ライブラリを登録する必要があります。
表1-3に、Jersey 2.5.1 (JAX-RS 2.0 RI)とともに提供される主な機能を示します。
注意: Jersey 2.5.1 (JAX-RS 2.0 RI)を使用して構築されたRESTful Webサービスおよびクライアントは、Oracle Web Services Manager (OWSM)ポリシーを使用して保護できません。アプリケーションでOWSMセキュリティを使用する必要がある場合は、デフォルト実装のJersey 1.18 (JAX-RS 1.1 RI)を使用する必要があります。 |
表1-3 Jersey 2.5.1 (JAX-RS 2.0 RI)の主な機能
主な機能 | 説明 |
---|---|
クライアントAPI |
RESTful Webサービスと標準的な方法で通信します。Client APIにより、HTTPプロトコル経由で公開されるWebサービスの使用が容易になり、既存の安定したクライアント側のHTTPコネクタ実装を利用するクライアント側のポータブル・ソリューションを開発者が簡潔に効率よく実装できるようになります。 詳細は、次を参照してください。
|
非同期通信 |
リクエストを非同期に呼び出して処理します。 詳細は、次を参照してください。
|
フィルタおよびインターセプタ |
フィルタを使用して、ヘッダー情報など、インバウンドおよびアウトバウンドのリクエストとレスポンスを変更します。インターセプタを使用して、エンティティの入力ストリームおよび出力ストリームを変更します。フィルタおよびインターセプタは、クライアント側とサーバー側の両方で使用できます。 詳細は、『Jersey 2.5.1 User Guide』の「Filters and Interceptors」を参照してください。 |
表1-4に、Jersey 2.5.1 (JAX-RS 2.0 RI)を登録してRESTful Webサービスおよびクライアントの開発および保護に使用するための共通タスクのロードマップを示します。
表1-4 Jersey 2.5.1 (JAX-RS 2.0 RI)を使用してRESTful Webサービスおよびクライアントを実装するためのロードマップ
タスク | 詳細情報 |
---|---|
Jersey 2.5.1 (JAX-RS 2.0 RI)共有ライブラリを登録します。 |
第2章「Jersey 2.5.1 (JAX-RS 2.0参照実装)の登録」 |
RESTful Webサービスを開発します。 |
|
RESTful Webサービスを呼び出すクライアントを開発します。 |
Jersey 2.5.1 (JAX-RS 2.0 RI)を使用したRESTful Webサービス・クライアントの開発 |
RESTful Webサービスをパッケージ化およびデプロイします。 |
|
RESTful Webサービスを保護します。 |
|
RESTful Webサービスをテストします。 |
|
RESTful Webサービスを監視します。 |
第8章「RESTful Webサービスとクライアントの監視」 |
(オプション)既存のアプリケーションをJersey 1.xから2.xに移行します。 |
『Jersey 2.5.1 User Guide』の「Migration Guide」 |
表1-4に、RESTful Webサービスの詳細に関するリソースのリストを示します。
表1-5 詳細に関するリソース
リソース | リンク |
---|---|
Jerseyユーザー・ガイド |
|
Jersey API Javadoc |
|
JerseyプロジェクトのWikiコミュニティ |
|
JSR-311 JAX-RS |
|
RESTful Webサービス(JAX-RS)サンプル |
『Oracle WebLogic Serverの理解』のサンプル・アプリケーションとコード例に関する項 |
Java EE 6チュートリアル-JAX-RSを使用したRESTful Webサービスの構築 |
|
『Architectural Styles and the Design of Network-based Software Architectures』 (Roy Fieldingの論文)の「Representational State Transfer (REST)」 |
|