GlassFish での RESTful Web サービスについて
REST (REpresentational State Transfer) は、World Wide Web などの分散ハイパーメディアシステム用アーキテクチャースタイルです。RESTful アーキテクチャーで中心となるのは、URI (Universal
Resource Identifier) によって識別されるリソースという概念です。これらのリソースは HTTP などの標準インタフェースを使用して操作できます。また情報は、これらのリソースの表現を使用して交換されます。このチュートリアルでは、最初に REST について少し学習したあと、NetBeans IDE 6.0 がこのアーキテクチャー型をサポートする方法について説明します。
注: このチュートリアルは GlassFish v2 アプリケーションサーバー向けです。Tomcat Web サーバーで RESTful サービスを開発する場合、「Tomcat での RESTful Web サービスについて 」を参照してください。
目次
このチュートリアルに従うには、次のソフトウェアとリソースが必要です。
GlassFish は、NetBeans IDE の Web および Java EE の配布とともにインストールできます。または、GlassFish のダウンロードページ にアクセスすることも可能です。
このチュートリアルでは RESTful Web サービスのプラグインも必要です。IDE で「ツール」メニューの下にある「プラグイン」マネージャーを開き、「インストール済み」タブで「RESTful Web サービス」プラグインがインストールされているかを確認します。インストールされていない場合、「使用可能なプラグイン」タブから次のようにインストールします。
はじめに
RESTful Web サービスは、RESTful アーキテクチャースタイルを使用して構築されたサービスです。RESTful アプローチを使用する Web サービスの構築は、インターネット上にサービスを配備するために、SOAP ベースのテクノロジを使用する代わりとして幅広く使用されています。これは、軽量かつ HTTP 経由でデータを直接送信できるためです。
IDE は、JAX-RS (JSR 311 - Java API for RESTful Web Services) および Jersey (JAX-RS のリファレンス実装) を使用する、RESTful Web サービスの迅速な開発をサポートしています。
詳細については、次を参照してください。
RESTful Web サービスの構築に加え、IDE は RESTful Web サービスにアクセスするクライアントアプリケーションの構築、テスト、および Web サービスを呼び出すコードの生成 (RESTful と SOAP ベースの両方) もサポートしています。
IDE が提供する RESTful 機能の一覧は次のとおりです。
JPA エンティティークラスおよびパターンからの RESTful Web サービスの迅速な作成。
RESTful コンポーネントパレットからコンポーネントをドラッグ&ドロップすることによる、Google マップ、Yahoo News Search、StrikeIron Web サービスなどの Web サービスを呼び出すコードの迅速な生成。
RESTful クライアントアプリケーションの構築用 RESTful Web サービスからの JavaScript クライアントのスタブの生成。
RESTful Web サービスのテスト用テストクライアントの生成。
プロジェクト内の RESTful Web サービスの実装クラスを簡単にナビゲートする論理ビュー。
このチュートリアルでは、RESTful Web サービスを生成、実装、およびテストする際、IDE がどのようなサポートを提供するのかを説明します。
データベースからのエンティティークラスの生成
この課題の目標は、プロジェクトを作成し、データベースからエンティティークラスを生成することです。
「ファイル」>「新規プロジェクト」を選択します。「カテゴリ」で「Web」を選択します。「プロジェクト」で「Web アプリケーション」を選択して、「次へ」をクリックします。
「プロジェクト名」に「CustomerDB 」と入力します。
「サーバー」で GlassFish を選択します。残りのオプションもクリックして進み、「完了」をクリックします。
「CustomerDB 」ノードを右クリックし、「新規」>「データベースからのエンティティークラス」を選択します。または、「新規ファイル」ウィザード (Ctrl-N) にある「持続性」カテゴリから選択することも可能です。
「データベース表」パネルで、「jdbc/sample 」データソースを選択します。次に「使用可能な表」から「CUSTOMER」を選択して「追加」をクリックします。CUSTOMER 表と関連のある DISCOUNT_CODE 表が自動的に「選択した表」に追加されます。画面は次のようになります。
「次へ」をクリックします。
「パッケージ」で「customerdb 」と入力します。画面は次のようになります。
「持続性ユニットを作成」をクリックします。次のダイアログが表示されます。
「作成」をクリックし、「完了」をクリックします。
「プロジェクト」ウィンドウを表示します。画面は次のようになります。
エンティティークラスからの RESTful Web サービスの生成
この課題の目標は、前の節で生成したエンティティークラスから RESTful Web サービスを生成することです。
エンティティークラスを格納しているパッケージを右クリックし、「新規」>「エンティティークラスからの RESTful Web サービス」を選択します。
「新規 エンティティークラスからの RESTful Web サービス」ウィザードで、「すべてを追加」をクリックします。画面は次のようになります。
「次へ」をクリックします。
次のパネルで、デフォルトはそのままにします。
IDE で生成される項目がすべて表示されます。IDE はコンテナと項目というパターンでリソースクラスを生成します。たとえば Customer エンティティークラスの場合、IDE は CustomersResource というコンテナリソースと、CustomerResource という項目リソースを生成します。また、CustomersConverter および CustomerConverter など対応のエンティティーインスタンスからリソース表現を生成する目的で、IDE は各リソースクラスについてコンバータクラスを生成します。さらに、関連を表現するために、CustomerRefConverter などの、参照コンバータと呼ばれる追加のコンバータクラスがあります。
「完了」をクリックします。
「プロジェクト」ウィンドウを表示します。次のように表示されているはずです。
「プロジェクト」ウィンドウの「RESTful Web サービス」ノードに、プロジェクトのすべての RESTful Web サービスが表示されます。[/customers/] など、角カッコ内の値は URI テンプレートの値です。このノードをダブルクリックしてもソースファイルに移動できます。このビューではすべての HTTP メソッドとサブリソースロケータメソッドも表示されます。この場合でも、ノードをダブルクリックすることでメソッドに移動できます。
ここまででエンティティークラスと RESTful Web サービスが生成されたので、アプリケーションのテストを始めましょう。IDE には RESTful Web サービスのテストに便利なユーティリティーが備わっています。次の節でこれを使用します。
RESTful Web サービスのテスト
この課題の目標は、アプリケーションを試してみることです。
次のように、プロジェクトノードを右クリックして「RESTful Web サービスをテスト」を選択します。
サーバーが起動し、アプリケーションが配備されます。最後に、各 Web サービスのリンクが含まれるアプリケーションがブラウザ上に表示されます。
左側にあるのはルートリソースのセットで、customers および discountCodes という名前が付いています。
まず「customers 」などのルートリソースを選択します。メソッドのドロップダウンリストをクリックし、「GET(application/xml) 」または「GET(application/json) 」を選択します。「テスト」をクリックします。結果が「テスト出力」セクションに表示されます。
「テスト出力」セクションには 4 つのタブがあります。「表形式ビュー」は出力結果のドキュメントにあるすべての URI を表示するフラットなビューで、リンクをクリックすることで移動できます。「raw データのビュー」は実際に戻ってきたデータを表示します。選択した MIME タイプ (application/xml または application/json ) により、表示されるデータはそれぞれ XML または JSON 形式です。「Headers」タブは HTTP ヘッダー情報を表示します。「HTTP モニター」というタブもあり、実際に送受信された HTTP 要求および応答を表示します。
ブラウザを閉じ、IDE に戻ります。
Google マップ機能の追加
この課題の目標は、Google マップの機能を RESTful Web サービスに追加することです。
次のように、エディタで CustomerResource クラスを開きます。「ツール」メニューから「パレット」を選択します。パレットがエディタの右側に現れ、次のようなコードスニペットが表示されます。
http://www.google.com/apis/maps/signup.html で Google マップのキーにサインアップします。Google マップのキー要求ダイアログには、ユーザーの Web サイトの URL を入力するフィールドがあります。このフィールドに「http://localhost:8080 」と入力します。
「Google」カテゴリから「マップ」の項目をドラッグし、クラスの任意の場所にドロップします。「GoogleMap のカスタマイズ」ダイアログが開きます。次のように Google マップのキーを「apiKey」フィールドに入力します。
「閉じる」をクリックします。
IDE は「GoogleMapResource 」クラスを作成します。CustomerResource クラスはこれのメソッドを使用してアクセスします。次も IDE が作成します。
/** * Returns GoogleMapResource sub-resource. */ @Path("googleMap/") public GoogleMapResource getGoogleMap() { try { customer.db.tomcat.Customer entity = getEntity(); String apiKey = null; String address = entity.getAddressline1(); Integer zoom = null; return new GoogleMapResource(apiKey, address, zoom); } finally { PersistenceService.getInstance().close(); } }
プロジェクトノードを右クリックし、再度「RESTful Web サービスをテスト」を選択しすると、ふたたびブラウザが起動するので「googleMap 」をクリックします。apiKey が入力された状態で、次のような画面が表示されるはずです。
「テスト」ボタンをクリックします。Google マップが「raw データのビュー」タブで開きます。
重要: Firefox 2 では、テストクライアントは画像を生成しようとして常にハングアップしている状態になります。「Resource: 」の下にある http:.../googleMap/ の URL をクリックすると、マップの画像がブラウザの新しいタブに表示されます。
関連項目
NetBeans IDE 6.0 での RESTful Web サービスの開発をさらに学習するには、次のチュートリアルを参照してください。
NetBeans IDE 6.0 を使用した Java EE アプリケーションの開発方法についての詳細は、次のリソースを参照してください。
nbj2ee
@
netbeans.org
メーリングリスト に登録することによって、NetBeans IDE Java EE 開発機能に関するご意見やご提案を送信したり、サポートを受けたり、最新の開発情報を入手したりできます。