corner imagecorner image
IDEPlatformPluginsDocs & SupportCommunityPartners

RESTful Web サービスについて

REST (REpresentational State Transfer) は、World Wide Web などの分散ハイパーメディアシステム用アーキテクチャースタイルです。RESTful アーキテクチャーで中心となるのは、URI (Universal Resource Identifier) によって識別されるリソースという概念です。これらのリソースは HTTP などの標準インタフェースを使用して操作できます。また情報は、これらのリソースの表現を使用して交換されます。このチュートリアルでは、最初に REST について少し学習したあと、NetBeans IDE がこのアーキテクチャー型をサポートする方法について説明します。

目次

このページの内容は NetBeans IDE 7.1 が対象です

このチュートリアルに従うには、次のソフトウェアとリソースが必要です。

ソフトウェアまたはリソース 必須バージョン
NetBeans IDE Java EE ダウンロードバンドル
Java Development Kit (JDK) version 6 または 7
Java EE 互換の Web サーバーまたはアプリケーションサーバー

Tomcat Web サーバー 6.x-7.x、Oracle WebLogic Server 11g-12c
または GlassFish Server Open Source Edition 3.x。
重要: このチュートリアルで Tomcat を使用する場合は次を参照してください。
REST による Tomcat に関する NetBeans の Wiki

jdbc/sample データベース -
Java DB (Derby) データベースサーバーまたは MySQL
データベースサーバー

Java DB (Derby) の場合、jdbc/sample データベースは NetBeans IDE によって生成され、
そのタイミングは IDE と GlassFish アプリケーションサーバーをインストールしたときです。

MySQL の場合、IDE 内から MySQL サーバー上でサンプルデータベースを作成したあと、IDE はサンプルデータベースにデータを生成します。

Tomcat および GlassFish サーバーは、どちらも NetBeans IDE の Web および Java EE の配布とともにインストールできます。または、GlassFish サーバーのダウンロードページApache Tomcat のダウンロードページからダウンロードすることもできます。

重要: Java EE 6 プロジェクトには、Tomcat 7.x、GlassFish Server 3.x、または Oracle WebLogic Server 12c が必要です。

はじめに

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 機能の一覧は次のとおりです。

  1. JPA エンティティークラスおよびパターンからの RESTful Web サービスの迅速な作成。
  2. 「サービス」ウィンドウの Web サービスマネージャーからコンポーネントをドラッグ&ドロップすることによる、Google マップ、Yahoo News Search、StrikeIron Web サービスなどの Web サービスを呼び出すコードの迅速な生成。
  3. Web サービスマネージャーに登録されたサービスに対する RESTful Java クライアントの生成。
  4. RESTful Web サービスのテスト用テストクライアントの生成。
  5. プロジェクト内の RESTful Web サービスの実装クラスを簡単にナビゲートする論理ビュー。
  6. Spring トランザクション処理を提供する、完全に統合された Spring Framework。

このチュートリアルでは、RESTful Web サービスを生成、実装、およびテストする際、IDE がどのようなサポートを提供するのかを説明します。

RESTful Web サービス、永続性、およびエンティティークラス

Java における RESTful Web サービスは、データベースと通信するために Java Persistence API に依存しています。具体的には、RESTful Web サービスは Persistence API に定義されるようにエンティティークラス永続性ユニットに依存しています。エンティティークラスはリレーショナルデータベース内のオブジェクトに対応する Java クラスです。Java EE5 チュートリアルには次のように記載されています。「エンティティーは軽量な永続性ドメインオブジェクトです。一般的に、エンティティーはリレーショナルデータベースの表を表現し、各エンティティーインスタンスはその表の行に相当します。」永続性ユニットは、persistence.xml ファイルで定義されるように、一連のエンティティークラス、データソース、永続性プロバイダ、および永続性ユニットの独自の名前で構成されます。

NetBeans IDE を使用して、エンティティークラスと RESTful Web サービスを同じプロセスで作成することも、既存のエンティティークラスから RESTful Web サービスを作成することもできます。このチュートリアルでは、「データベースからの RESTful サービス」ウィザードを使用して、エンティティークラスと RESTful Web サービスを同じプロセスで生成します。ウィザードは永続性ユニットを自動的に生成します。

MySQL データベースサーバーの使用

JavaDB (Derby) でなく MySQL データベースサーバーを使用する場合、データベースサーバーを IDE に登録し、sample データベースをサーバーに追加する必要があります。

このチュートリアルで MySQL データベースサーバーを使用するには、次の手順に従います。

  1. MySQL サーバーがまだ登録されていない場合、サーバーを IDE に登録します。MySQL サーバーを登録するには、IDE の「サービス」ウィンドウに移動し、「データベース」ノードを右クリックして「MySQL サーバーを登録」を選択します。
    「サービス」ウィンドウの「MySQL サーバーを登録」オプション
  2. 管理者のユーザー名やパスワードなどの MySQL サーバーの構成の詳細情報を入力するダイアログが開きます。「MySQL データベースへの接続」の「MySQL サーバープロパティーの構成」を参照してください。

    IDE で登録中の MySQL サーバーの基本プロパティー
  3. MySQL サーバーを起動し、これに接続します。「MySQL データベースへの接続」の「MySQL サーバーの起動」を参照してください。
  4. MySQL サーバーのノードを右クリックし、「データベースを作成」を選択します。「MySQL データベースの作成」ダイアログが開きます。
    「データベースを作成」コンテキストメニューオプション
  5. 新規データベース名として「sample」と入力します。root ユーザーまたは選択したユーザーにフルアクセス権を付与します。
    入力された「新規データベース名」ダイアログ
  6. 「了解」をクリックします。ダイアログが開き、sample がサンプルデータベースの名前であることを通知し、このデータベースの表、オブジェクト、およびデータを作成するかどうかをユーザーに尋ねます。
    データベースにサンプルデータを生成するプロンプト
  7. 「はい」をクリックします。IDE はデータベースを作成してデータを生成し、このデータベースに接続を追加します。
    「サービス」ウィンドウでの生成されたサンプルデータベースとデータベース接続

データベースからの RESTful Web サービスの作成

この課題の目標は、プロジェクトを作成し、データベースからエンティティークラスと RESTful Web サービスを生成することです。

この節では JavaDB (Derby) データベースと jdbc/sample データソースを使用します。JavaDB は SDK に含まれています。jdbc/sample データソースは、IDE と GlassFish を一緒にインストールするとき、NetBeans IDE によって自動的に生成されます。

プロジェクトの作成

RESTful Web サービスを作成するには、Java Web アプリケーションプロジェクトが必要です。

プロジェクトを作成するには、次の手順に従います。

  1. 「ファイル」>「新規プロジェクト」(Linux および Windows では Ctrl-Shift-N、MacOS では ⌘-Shift-N) を選択します。「カテゴリ」から「Java Web」を選択します。「プロジェクト」で「Web アプリケーション」を選択します。「次へ」をクリックします。「新規 Web アプリケーション」ウィザードが開きます。

    あるいは、Maven Web アプリケーションも作成できます。「ファイル」>「新規プロジェクト」(Linux および Windows では Ctrl-Shift-N、MacOS では ⌘-Shift-N) を選択します。「カテゴリ」で「Maven」を選択します。「プロジェクト」で「Maven Web アプリケーション」を選択して、「次へ」をクリックします。

  2. 「プロジェクト名」に「CustomerDB」と入力します。「次へ」をクリックします。
  3. 「Java EE 6 Web」または「Java EE 5」を選択します。「サーバー」で、使用するサーバーを選択しますが、EE 6 プロジェクトでは GlassFish サーバー 3 以降が必要です。残りのオプションもクリックして進み、「完了」をクリックします。

    Maven プロジェクトで重要: Maven Web アプリケーションを作成するときはサーバーを設定できません。ただし、永続性ユニットを作成するには、サーバーを設定しておく必要があります。したがって、Maven Web アプリケーションを作成したあと、プロジェクトの「プロパティー」を開き、「実行」プロパティーでサーバーを設定します。プロジェクトの「プロパティー」を開くには、プロジェクトノードを右クリックし、コンテキストメニューから「プロパティー」を選択します。

    Tomcat 7 および EE6: Tomcat 7 は、NetBeans IDE によって生成される EE6 RESTful サービスと一緒には動作しません。これは、NetBeans は EE6 RESTful サービスとしてステートレスセッションファサードを生成しますが、Tomcat 7 は EJB 3.1 または EE6 EJB をサポートするプラグインを持たないためです。これらの問題の進捗状況をたどるには、Apache Geronimo プロジェクトおよび Apache OpenEJB プラグインプロジェクトを参照してください。

エンティティークラスと RESTful サービスの生成

Java Web アプリケーションが準備できたら、エンティティークラスと RESTful Web サービスをプロジェクトに追加します。

エンティティークラスと RESTful Web サービスを生成するには、次の手順に従います。

  1. CustomerDB」ノードを右クリックし、「新規」>「その他」>「Web サービス」>「データベースからの RESTful Web サービス」を選択します。「新規 RESTful Web サービス」ウィザードの「データベース表」パネルが開きます。
    メニュー内の「データベースからの RESTful Web サービス」オプション
  2. GlassFish サーバーを使用している場合は、「データベース表」パネルの「データソース」ドロップダウンフィールドから「jdbc/sample」データソースを選択します。

    Tomcat を使用している場合は、「jdbc:derby://localhost:1527/sample」を選択します。Derby データベースサーバーが自動的に起動しない場合は、「サービス」ウィンドウの「データベース」タブから起動する必要があります。

    MySQL ユーザーへの注: 新規データソースを作成する必要があります。「新規データソース」を選択し、わかりやすい任意の名前を付け、「jdbc:mysql://localhost:3306/sample」データベース接続を選択します。この接続は、MySQL 上にサンプルデータベースを作成したときに作成しました。
    mysql 接続を使用する新規データソース

  3. 「使用可能な表」で「CUSTOMER」を選択し、「追加」をクリックします。CUSTOMER テーブルと関連のある DISCOUNT_CODE テーブルが自動的に「選択した表」に追加されます。画面は次のようになります。

    「新規 データベースからのエンティティークラス」の「データベース表」パネル、CUSTOMER および DISCOUNT_CODE 表を選択
  4. 「次へ」をクリックします。「エンティティークラス」ページが開きます。「パッケージ」で「entities」と入力します。画面は次のようになります。

    注: 「データベースからの RESTful Web サービス」ウィザードは JAXB 注釈を自動的に生成します。EE6 アプリケーションのエンティティークラスを「データベースからのエンティティークラス」ウィザードで生成し、あとでこれらのエンティティークラスから RESTful Web サービスを作成する可能性がある場合は、「JAXB 注釈を生成」ボックスが選択されていることを確認します。また、「エンティティークラスからの RESTful Web サービス」ウィザードを実行する前に、JAXB 注釈をエンティティークラスに手作業で追加することもできます。詳細については、「NetBeans による簡単な RESTful Web サービスの生成」を参照してください。

    パッケージ名を示す、「データベースからの RESTful Web サービス」ウィザードの「エンティティークラス」パネル
  5. 「次へ」をクリックします。「生成されるクラス」パネルが開きます。このパネルでは、IDE がプロジェクト用に生成する RESTful Web サービスクラスの場所を設定できます。「生成されるクラス」パネルは EE5 と EE6 の RESTful Web サービスで異なっており、この理由は、EE5 プロジェクトは JPA コントローラクラスを含みますが、EE6 Web サービスでは代わりにステートレスセッション Bean としてサービスクラスを生成するためです。
    EE5 プロジェクトの場合の「生成されるクラス」ページ

     

  6. デフォルトのパッケージおよび場所を受け入れ、「完了」をクリックします。IDE はエンティティークラスを生成します。次に、RESTful リソースの登録方法を尋ねるダイアログが開きます。EE5 プロジェクトの場合、web.xml 配備記述子内の Jersey RESTful サーブレットアダプターを使用する選択肢 (デフォルト) と、独自のソリューションを手作業でコーディングする選択肢があります。EE6 プロジェクトの場合、javax.ws.rs.core.Application のサブクラスを使用するという追加の選択肢 (デフォルト) があります。

    Spring Framework アプリケーション: RESTful リソースを web.xml 配備記述子に登録してください。javax.ws.rs.core.Application を使用しないでください。

    RESTful リソースの登録のためのオプション、EE6 アプリケーション

IDE により、RESTful Web サービスが生成されます。IDE が完了したら、「プロジェクト」ウィンドウを見ます。生成されたエンティティークラスは entities パッケージ内にあります。サービスは service パッケージ内にあります。EE5 プロジェクトの場合、JPA コントローラクラスが controller パッケージ内にあり、web.xml 配備記述子が「構成ファイル」の下にあります。

注意: IDE で「参照の問題を解決」プロンプトが表示されることがあります。この場合、「CustomerDB」プロジェクトノードを右クリックし、「参照の問題を解決」を選択します。この問題は、サービスが WebLogic インストールで実行される最初の Jersey アプリケーションである場合に発生することがあります。この場合、IDE は Jersey ライブラリをサーバーにコピーすることによって参照問題を解決します。

データベースプロジェクトからの完全な EE5 RESTful サービス

データベースからの EE6 RESTful Web サービスは、各サービスクラスの EntityManager をインスタンス化します。これにより、JPA コントローラクラスが不要になり、よりシンプルなコードが生成されます。

データベースプロジェクトからの完全な EE6 RESTful サービス

RESTful Web サービスのテスト

この課題の目標は、アプリケーションを試してみることです。

  1. プロジェクトのノードを右クリックし、「RESTful Web サービスをテスト」を選択します。テストクライアントを生成する場所を、サービスプロジェクト内にするか、別の Java Web プロジェクト内にするかを尋ねるダイアログが開きます。このオプションによって、一部のブラウザのセキュリティー制限を回避できます。CustomerDB プロジェクトと同じサーバードメインに配備されるように構成されていれば、すべての Web プロジェクトを使用できます。
    テストクライアントを生成する場所を、ローカルにするか、同じドメインに配備される別の Java Web プロジェクトにするかを選択するダイアログ
  2. テストクライアントを生成する場所を選択し、「了解」をクリックします。サーバーが起動し、アプリケーションが配備されます。配備が完了すると、それぞれの Web サービスへのリンク付きで、ブラウザにアプリケーションが表示されます。

    1 つ以上のクラスが存在しておらず、プロジェクトが構築されないというエラーメッセージが「出力」ウィンドウに表示された場合、コンパイル時ライブラリに Jersey ライブラリを追加します。プロジェクトのノードを右クリックし、「プロパティー」を選択します。「プロパティー」ツリーメニューで、「ライブラリ」を選択します。「ライブラリを追加」をクリックし、Jersey ライブラリを参照します。

    ブラウザでの RESTful Web サービステスターの開始ページ

    左側にルートリソースの組があります。ここでは、customersdiscountCodes という名前が付いています。

  3. customers」ノードをクリックします。ブラウザウィンドウで Customers サービスのテスト用パラメータのリストが表示されます。
    ルートリソースのテスト用のパラメータフィールドを示す Restful Web サービスのテストウィンドウ

    次のパラメータを設定できます。

    • テストするメソッドを選択します。ドロップダウンリストから、GET または POST メソッドおよび MIME タイプを選択します。
    • 開始。表示する最初のエンティティー。番号設定は 1 ではなく 0 から開始します。
    • 最大。フェッチするエンティティーの最大数。0 を設定すると、すべてのエンティティーがフェッチされます。
    • 展開レベル。高度な機能。一部のサービスは、無限に繰り返されるツリー階層を返します。このパラメータは、raw データのビューで表示する階層の深さを指定します。
    • クエリー。高度な機能。JPA 構文に従って、XML または JSON ドキュメントを検索します。
  4. メソッドのドロップダウンリストをクリックし、「GET(application/xml)」を選択します。「最大」フィールドに「3」を入力します。その他のパラメータはデフォルトの値のままにし、「テスト」をクリックします。結果が「テスト出力」セクションに表示されます。
    データベースからのカスタマの一覧を表示した RESTful Web サービステスターの出力

    「テスト出力」セクションには 5 つのタブがあります。

    • 「表形式ビュー」は出力結果のドキュメントにあるすべての URI を表示するフラットなビューで、リンクをクリックすることで移動できます。
    • 「raw データのビュー」は実際に戻ってきたデータを表示します。選択した MIME タイプ (application/xml または application/json) により、表示されるデータはそれぞれ XML または JSON 形式です。
    • 「サブリソース」タブには、ルートリソースとサブリソースの URL が表示されます。RESTful Web サービスはデータベースのエンティティークラスに基づいており、ルートリソースはデータベース表を、サブリソースは列を表します。
    • 「ヘッダー」タブには HTTP ヘッダー情報が表示されます。
    • 「HTTP モニター」タブに、送受信された実際の HTTP 要求および応答が表示されます。

    最大 3 エンティティーを表示するよう指定しましたが、6 つの結果が一覧表示されています。その理由を参照するには、「raw データのビュー」タブを開いてください。各エンティティーが <customer> 要素に対応しており、テスト結果には 3 customer しかありません。しかし、Tablular ビューはエンティティーではなく URI を一覧表示しており、各エンティティーには親の <customer> 要素の属性と子の <discountCode> 要素の属性という 2 つの URI があります。そのため、customer エンティティーが 3 つしかなくても、URI は合計 6 つあります。

    RESTful Web サービステスターの「raw データのビュー」ウィンドウ
  5. ブラウザを閉じ、IDE に戻ります。

Google マップ機能の追加

この課題の目標は、Google マップの機能を RESTful Web サービスに追加することです。

  1. エディタで CustomerRESTFacade クラス (EE 5) または CustomerFacadeREST クラス (EE 6) を開きます。
  2. クラスに次のメソッドを追加します。
    @GET
    @Produces("text/html")
    public String getGoogleMap() {
    // Drag and drop the getGoogleMap operation here
    
       return "";
    }
  3. http://www.google.com/apis/maps/signup.html で Google マップのキーにサインアップします。Google マップのキー要求ダイアログには、ユーザーの Web サイトの URL を入力するフィールドがあります。このフィールドに「http://localhost:8080」と入力します。
  4. IDE で「サービス」タブを開き、「Web サービス」ノードを展開します。「Web サービス」で「Google」を展開します。「Google」で「Map Service」を展開します。

    Google のマップサービスを表示したサービスビュー
  5. getGoogleMap 項目をドラッグし、手順 2 で作成した getGoogleMap メソッド本文の return = ""; 行の直前にドロップします。「getGoogleMap SaaS サービスのカスタマイズ」ダイアログが開きます。デフォルト値のままにして、「了解」をクリックします。

    IDE によって、次の try ブロックが CustomerResource クラスの getGoogleMap メソッドに追加されます。

    @GET
    @Produces("text/html")
    public String getGoogleMap() {
    // Drag and drop the getGoogleMap operation here
            
        try {
                 
             String address = "16 Network Circle, Menlo Park";
             java.lang.Integer zoom = 15;
             String iframe = "false";
             RestResponse result = GoogleMapService.getGoogleMap(address, zoom, iframe);
             //TODO - Uncomment the print Statement below to print result.
             //System.out.println("The SaasService returned: "+result.getDataAsString());
        } catch (Exception ex) {
             ex.printStackTrace();
        }
    
        return "";
    
    }
                    

    IDE は、次のクラスおよびリソースを含む org.netbeans.saas と org.netbeans.saas.google のパッケージも作成します。

    • RestConnection - HttpUrlConnection を囲むラッパー
    • RestResponse - HTTP 応答用のラッパー
    • googlemapservice.properties - API キーを格納するプロパティーファイル
    • GoogleMapService - ラッパーメソッドを含むサービスラッパーで、RestConnection を使用して Google マップサービスを呼び出します。
    getGoogleMap メソッドが Customer Resource にドロップされたあとに追加されたパッケージを示す「プロジェクト」ウィンドウ
  6. getGoogleMap() の try ブロックで、コメントアウトされた print 文を行 return result.getDataAsString(); に置き換えます。メソッドは次のようになります。
    @GET
    @Produces("text/html")
    public String getGoogleMap() {
    // Drag and drop the getGoogleMap operation here
            
        try {
                 
             String address = "16 Network Circle, Menlo Park";
             java.lang.Integer zoom = 15;
             String iframe = "false";
             RestResponse result = GoogleMapService.getGoogleMap(address, zoom, iframe);
             return result.getDataAsString();
        } catch (Exception ex) {
             ex.printStackTrace();
        }
    
        return "";
    }
  7. googlemapservice.properties を開きます。手順 3 で Google から取得した API キーにペーストします。
  8. CustomerDB project ノードを右クリックし、「RESTful Web サービスをテスト」を選択します。IDE によってプロジェクトがサーバーから配備解除および再配備され、テストクライアントでブラウザウィンドウに表示されます。
  9. 左サイドバーの「customers」を選択します。customers のテスト条件が主区画に表示されます。デフォルトのまま、「テスト」をクリックします。customers の表が開きます。
  10. 表の customer1 をクリックします。その顧客のテストウィンドウが主区画で開きます。ドロップダウンメニューから、text/html MIME タイプを選択します。「テスト」をクリックします。Menlo Park、Network Circle 16 の Google マップが「raw データのビュー」で開きます。
    Menlo Park の Google マップを示す RESTful サービスのテストページ
  11. Menlo Park の住所の Google マップは、データベースにあるすべての顧客に表示されます。顧客の実際の住所の Google マップを表示するには、Customer のインスタンスを作成し、その Customer のインスタンスの住所の各変数を連結したものを住所として設定します。

    EE5 サービスの場合、getEntity() メソッドを使用して、データベースの各エンティティーについて Customer のインスタンスを作成します (変更は太字で示しています)。

    EE5 サービス:

    @GET
    @Produces("text/html")
    public String getGoogleMap() {
        try {
             Customer c = getEntity();
             String address = c.getAddressline1() + " " + c.getAddressline2() + " " +
                     c.getCity() + " " + c.getState() + " " + c.getZip();
             java.lang.Integer zoom = 15;
             String iframe = "false";
     
             RestResponse result = GoogleMapService.getGoogleMap(address, zoom, iframe);
             return result.getDataAsString();
         
         } catch (Exception ex) {
             ex.printStackTrace();
         } 
    
         
         return "";
     }

    EE6 サービスの場合、抽象ファサードから汎用的な find() メソッドを呼び出すことによって Customer のインスタンスを作成します。汎用的な find() メソッドでは、オブジェクトへの明示的な引数型キャストと明示的なエンティティー ID が必要です。次の EE6 コードは、顧客 ID 番号 1 のマップ位置を表示します (変更は太字で示しています)。

    EE6 サービス:

    @GET
    @Produces("text/html")
    public String getGoogleMap() {
        try {
             Customer c = getEntityManager().find(Customer.class, 1);
             String address = c.getAddressline1() + " " + c.getAddressline2() + " " +
                     c.getCity() + " " + c.getState() + " " + c.getZip();
             java.lang.Integer zoom = 15;
             String iframe = "false";
     
             RestResponse result = GoogleMapService.getGoogleMap(address, zoom, iframe);
             return result.getDataAsString();
         
         } catch (Exception ex) {
             ex.printStackTrace();
         } 
    
         
         return "";
     }
  12. RESTful Web サービスを再テストします。EE5 サービスの場合、いずれかの顧客について text/html MIME タイプを選択します。データベースにある顧客の住所の Google マップが「raw データのビュー」に表示されます。EE6 サービスの場合、顧客 ID は find() メソッドの引数として指定され、テスターはデフォルトで Raw ビューを表示します。customer1 の場合、次のマップが表示されます。
    データベースの顧客の住所を示した Google マップ

    注: Google マップが住所を検索できない場合、海を拡大表示します。

Spring Framework での RESTful Web サービス

Jersey は Spring Framework に統合されています。Spring Framework で Java Web アプリケーションを作成する場合、REST を認識するサーブレットが自動的に作成されます。ただし、Spring 3 には RESTful Web サービスが EntityManager オブジェクトを注入するために必要とする aopalliance.jar が含まれていません。

Spring Framework を使用した Java Web アプリケーションの作成

サーバーを選択し、エンティティークラスのデータベースまたは最初からの生成で説明されているように「新規プロジェクト」ウィザードで Java Web アプリケーションを作成して、「完了」ではなく「次へ」をクリックします。「フレームワーク」区画が開きます。「Spring Web MVC」を選択し、「完了」をクリックします。

Java Web アプリケーションを作成するときに Spring Framework を選択

プロジェクトへの aopalliance.jar の追加

Spring 3 には aopalliance.jar が含まれていません。アプリケーションでは EntityManager を注入するためにこのライブラリが必要です。問題を修正するには、この jar をダウンロードしてクラスパスに追加する必要があります。課題 193626 および Spring フォーラムを参照してください。

aopalliance.jar を追加するには、次の手順に従います。

  1. aopalliance.jar の ZIP アーカイブを http://sourceforge.net/projects/aopalliance/files/aopalliance/1.0/ からダウンロードします。
  2. 選択した場所でアーカイブを解凍します。
  3. IDE の「プロジェクト」ウィンドウで、Spring RESTful Web サービスのプロジェクトノードを右クリックします。コンテキストメニューが開きます。
    「プロパティー」ノードを示すコンテキストメニュー
  4. 「プロパティー」を選択します。「プロパティー」ダイアログが開きます。
  5. 「カテゴリ」区画で「ライブラリ」を選択します。「JAR/フォルダを追加」をクリックします。ファイルシステムブラウザが開きます。
  6. aopalliance.jar を参照します。絶対パス参照を使用します。「開く」をクリックします。
    aopalliance.jar の参照
  7. aopalliance.jar ファイルがライブラリに含められました。「了解」をクリックします。
    追加された aopalliance.jar を示すライブラリプロパティー

Spring 対応プロジェクトでの RESTful サービスの作成

Spring Framework を使用して Java Web アプリケーションを作成し、aopalliance.jar をプロジェクトのクラスパスに追加したあと、「エンティティーとサービスの生成」の説明に従って、「データベースからの RESTful Web サービス」ウィザードを実行します。ただし、RESTful リソースを javax.ws.rs.core.Application のサブクラスに登録しないでください。代わりに、web.xml 配備記述子を使用してください。Spring Framework は web.xml 配備記述子をすべての場合に生成します。

RESTful リソースの登録のためのオプション、web.xml が選択済み

NetBeans IDE の Spring Framework プロジェクトの機能に関する詳細は、「Spring Framework 入門」を参照してください。

コンパイルエラー

生成されたサービスクラスにはコンパイルエラーが存在することがあります。aopalliance.jar をクラスパスに追加する前に RESTful サービスを作成した場合、これらのエラーが表示されます。

サービスクラスのコンパイルエラーを修正するには、次の手順に従います。

  1. プロジェクトへの aopalliance.jar の追加」の説明に従って、aopalliance.jar をクラスパスに確実に追加します。
  2. IDE の先頭のメニューバーで、「編集」をクリックして「プロジェクト内を検索...」を選択します。
  3. プロジェクト内で @Error 注釈が存在する場所をすべて検索します。
    @Error 注釈の検索を示す「プロジェクト内を検索」ダイアログ
  4. コードからすべての @Error 行を削除します。
    @Error の検索結果で、1 行が強調表示され、削除されようとしている状態

関連項目

NetBeans IDE を使用した Java EE アプリケーションの開発方法についての詳細は、次のリソースを参照してください。

メーリングリストに登録することによって、NetBeans IDE Java EE 開発機能に関するご意見やご提案を送信したり、サポートを受けたり、最新の開発情報を入手したりできます。