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 サービスの迅速な作成。
「サービス」ウィンドウの Web サービスマネージャーからコンポーネントをドラッグ&ドロップすることによる、Google マップ、Yahoo News Search、StrikeIron Web サービスなどの Web サービスを呼び出すコードの迅速な生成。
Web サービスマネージャーに登録されたサービスの RESTful Java クライアントの生成。
RESTful Web サービスのテスト用テストクライアントの生成。
プロジェクト内の RESTful Web サービスの実装クラスを簡単にナビゲートする論理ビュー。
Spring トランザクション処理を提供する、完全に統合された Spring Framework。
このチュートリアルでは、RESTful Web サービスを生成、実装、およびテストする際、IDE がどのようなサポートを提供するのかを説明します。
RESTful Web サービス、持続性、およびエンティティークラス
Java の RESTful Web サービスでは、データベースと通信するために Java Persistence API が使用されます。具体的には、Persistence API に定義されているエンティティークラスと持続性ユニットが使用されます。エンティティークラスは、リレーショナルデータベースのオブジェクトに対応づけられる Java クラスです。Java EE5 チュートリアルでは、「エンティティーは軽量な持続性ドメインオブジェクトです。通常、エンティティーはリレーショナルデータベースの表を表し、各エンティティーインスタンスはその表の行に対応します。」と説明されています。持続性ユニットは、一連のエンティティークラス、データソース、持続性プロバイダ、および持続性ユニット自体の名前で構成されます。これらは persistence.xml ファイルで定義されます。
NetBeans IDE では、同じ手順の中でエンティティークラスと RESTful Web サービスを作成することも、既存のエンティティークラスから RESTful Web サービスを作成することもできます。このチュートリアルでは、「データベース」ウィザードで作成した RESTful サービスを使用して、エンティティークラスと RESTful Web サービスを同じ手順の中で生成します。このウィザードでは、持続性ユニットが自動的に生成されます。
MySQL データベースサーバーの使用
JavaDB (Derby) ではなく MySQL データベースサーバーを使用する場合は、IDE にデータベースサーバーを登録し、サーバーに sample データベースを追加する必要があります。
このチュートリアルで MySQL データベースサーバーを使用するには、次の手順に従います。
IDE に MySQL サーバーが登録されていない場合は登録します。MySQL サーバーを登録するには、IDE の「サービス」ウィンドウに移動し、「データベース」ノードを右クリックして、「MySQL サーバーを登録」を選択します。
RESTful Web サービスを作成するには、Java Web アプリケーションプロジェクトが必要です。
プロジェクトを作成するには、次の手順に従います。
「ファイル」>「新規プロジェクト」(Ctrl-Shift-N) を選択します。「カテゴリ」から「Java Web」を選択します。「プロジェクト」で「Web アプリケーション」を選択します。「次へ」をクリックします。「新規 Web アプリケーション」ウィザードが開きます。
代わりに、Maven Web アプリケーションを作成することもできます。「ファイル」>「新規プロジェクト」(Ctrl-Shift-N) を選択します。「カテゴリ」から「Maven」を選択します。「プロジェクト」で「Maven Web アプリケーション」を選択して、「次へ」をクリックします。
「プロジェクト名」に「CustomerDB」と入力します。「次へ」をクリックします。
「Java EE 6 Web」または「Java EE 5」を選択します。「サーバー」で、使用するサーバーを選択します。EE 6 プロジェクトでは GlassFish server 3 以降が必要なことに注意してください。残りのオプションもクリックして進み、「完了」をクリックします。
重要 (Maven プロジェクト): Maven Web アプリケーションを作成するときはサーバーを設定できません。ただし、持続性ユニットを作成するには、事前にサーバーを設定する必要があります。そのため、Maven Web アプリケーションを作成した後、プロジェクトの「プロパティー」を開き、「実行」プロパティーでサーバーを設定してください。プロジェクトの「プロパティー」を開くには、プロジェクトのノードを右クリックし、コンテキストメニューから「プロパティー」を選択します。
注 (EE6 サービス): 「データベースから RESTful Web サービス」ウィザードでは、JAXB 注釈が自動的に生成されます。「データベースからのエンティティークラス」ウィザードで EE6 アプリケーションのエンティティークラスを生成し、後でこれらのエンティティークラスから RESTful Web サービスを作成する場合は、「JAXB 注釈を生成」チェックボックスが選択されていることを確認してください。「エンティティークラスからの RESTful Web サービス」ウィザードを実行する前に、エンティティークラスに JAXB 注釈を手動で追加することもできます。詳細は、「NetBeans でのよりシンプルな RESTful Web サービスの生成」を参照してください。
「次へ」をクリックします。「生成されるクラス」パネルが開きます。このパネルでは、プロジェクトに生成される RESTful Web サービスクラスの場所を設定できます。「生成されるクラス」パネルは、EE5 の RESTful Web サービスと EE6 の RESTful Web サービスとで異なります。これは、EE5 プロジェクトにはコンバータクラスが含まれますが、EE6 Web サービスでは代わりにエンティティークラスに JAXB 注釈が使用されるためです。
プロジェクトのノードを右クリックし、「RESTful Web サービスをテスト」を選択します。サーバーが起動し、アプリケーションが配備されます。配備が完了すると、それぞれの Web サービスへのリンク付きで、ブラウザにアプリケーションが表示されます。
1 つ以上のクラスが存在しておらず、プロジェクトが構築されないというエラーメッセージが「出力」ウィンドウに表示された場合、コンパイル時ライブラリに Jersey ライブラリを追加します。プロジェクトのノードを右クリックし、「プロパティー」を選択します。「プロパティー」ツリーメニューで、「ライブラリ」を選択します。「ライブラリを追加」をクリックし、Jersey ライブラリを参照します。
NetBeans IDE 6.5 および Jersey 0.8 より、Jersey は Spring Framework に統合されます。Spring Framework で Java Web アプリケーションを作成する場合、REST を認識するサーブレットが自動的に作成されます。ただし、Spring 3 には、RESTful Web サービスが EntityManager オブジェクトを注入するために必要な aopalliance.jar は含まれていません。
Spring Framework での RESTful Web サービスの作成
Spring Framework で RESTful Web サービスを作成するには、チュートリアルで説明されている手順を 1 つを除いて繰り返します。サーバーを選択し、エンティティークラスのデータベースまたは最初からの生成で説明されているように「新規プロジェクト」ウィザードで Java Web アプリケーションを作成して、「完了」ではなく「次へ」をクリックします。「フレームワーク」区画が開きます。「Spring Web MVC」を選択し、「完了」をクリックします。
RESTful サービスを作成したあと、「Spring」プロジェクトと Spring なしで作成したプロジェクトの間にある次の相違を確認します。
NetBeans IDE の Spring Framework プロジェクトの機能に関する詳細は、「Spring Framework 入門」を参照してください。
プロジェクトへの aopalliance.jar の追加
Spring 3 には aopalliance.jar が含まれていません。アプリケーションで EntityManager を注入するには、このライブラリが必要です。この問題を解決するには、この jar をダウンロードしてクラスパスに追加する必要があります。また、コードから @Error 注釈を削除する必要もあります。課題 193626 および Spring フォーラムを参照してください。