RESTful Webサービスについて

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

目次

このページの内容は、NetBeans IDE 7.2、7.3および7.4に適用されます

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

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

Oracle WebLogic Server 11g-12c
またはGlassFish Server Open Source Edition 3.xまたは4.x
(EJBサポート・プラグインがTomcatにインストールされていないかぎりTomcatでは動作しません)

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

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

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

GlassFishサーバーは、どちらもNetBeans IDEのWebおよびJava EEの配布とともにインストールできます。または、GlassFishサーバーのダウンロード・ページにアクセスしてください。

重要: Java EE 6およびJava EE 7プロジェクトには、GlassFish Serverまたは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. 「OK」をクリックします。ダイアログが開き、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 7 Web」を選択します。「サーバー」で使用するサーバーを選択しますが、Java EEプロジェクトには、GlassFishサーバー3.xまたは4.xが必要であることに注意してください。残りのオプションをクリックして進み、「終了」をクリックします。

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

エンティティ・クラスと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テーブルが自動的に「選択した表」に追加されます。MySQLデータベースまたはDerbyの一部のバージョンを使用している場合は、MICRO_MARKET表も追加されます。次のようになります(Derbyバージョン)。

    データベースからの新規エンティティ・クラス・ウィザードの「データベース表」パネルでCUSTOMERおよびDISCOUNT_CODE表が選択された状態
  4. 「次」をクリックします。エンティティ・クラス・ページが開きます。「パッケージ名」に「entities」と入力します。次のようになります(Derbyバージョン)。

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

    パッケージ名が表示された、データベースからのRESTful Webサービス・ウィザードの「エンティティ・クラス」パネル
  5. 「次」をクリックします。生成したサービス・クラスおよびパッケージの名前と場所を設定できるパネルが開きます。Java EEプロジェクトの場合、RESTアプリケーション構成クラスの名前と場所を変更できます。

    Spring Frameworkアプリケーション: RESTfulリソースをweb.xmlデプロイメント・ディスクリプタに登録します。javax.ws.rs.core.Applicationを使用しないでください。

    このチュートリアルでは、デフォルトを受け入れて「終了」をクリックします。「終了」をクリックすると、IDEによってエンティティ・クラスとサービス・クラスが生成されます。Java EEプロジェクトでは、IDEによって、アプリケーションのサブクラスであるアプリケーション構成クラスも生成されます。

    生成されたサービスとサービス構成のクラスおよびパッケージ

IDEにより、RESTful Webサービスが生成されます。IDEが終了した後、「プロジェクト」ウィンドウを見ます。生成されたエンティティ・クラスはentitiesパッケージ内にあり、サービスはservice内にあります。データベースからのJava EE RESTful Webサービスは、各サービス・クラスのEntityManagerをインスタンス化します。これにより、JPAコントローラ・クラスが不要になり、より簡易なコードが生成されます。

RESTful Webサービスのテスト

この課題の目標は、アプリケーションを試してみることです。テスト用に新しいWebアプリケーションを作成し、IDEのウィザードを使用して新規プロジェクトにテストを生成します。

  1. メイン・メニューから「ファイル」>「新規プロジェクト」を選択します。
  2. 「Java Web」カテゴリで「Webアプリケーション」プロジェクト・タイプを選択します。「次」をクリックします。
  3. プロジェクト名に「WebServicesTest」と入力します。「次」をクリックします。
  4. ターゲット・サーバーとして「GlassFish Server」を選択し、Java EEバージョンとして「Java EE 6 Web」または「Java EE 7 Web」を選択します。「終了」をクリックします。
  5. CustomerDBプロジェクト・ノードを右クリックし、「RESTful Webサービスをテスト」を選択します。テスト・クライアントを生成する場所を、サービス・プロジェクト内にするか、別のJava Webプロジェクト内にするかを質問するダイアログが開きます。このオプションによって、一部のブラウザのセキュリティ制限を回避できます。CustomerDBプロジェクトと同じサーバー・ドメインにデプロイされるように構成されているかぎり、すべてのWebプロジェクトを使用できます。
    テスト・クライアントをローカルで生成するか、または同じドメインにデプロイされている別のJava Webプロジェクト内に生成するかを選択するためのダイアログ
  6. 「プロジェクト内のWebテスト・クライアント」を選択し、「参照」をクリックします。
  7. 「プロジェクトを選択」ダイアログ・ボックスで「WebServiceTest」プロジェクトを選択します。「OK」をクリックします。

    IDEによって、test-resbeans.htmlファイルがWebServiceTestプロジェクトに生成されます。IDEによってサーバーの起動およびCustomerDBアプリケーションのデプロイも自動的に行われます。

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

  8. WebServiceTestを右クリックし、「実行」を選択します。
  9. ブラウザでhttp://localhost:8080/WebServicesTest/test-resbeans.htmlを開きます。
    ブラウザでのRESTful Webサービス・テスターの開始ページ

    左側にルート・リソースの組があります。ここでは、entities.customerentities.discountCodesおよびentities.microMarketという名前です。

  10. entities.customer」ノードをクリックします。「テストするメソッドを選択します」フィールドで、「GET (application/json)」または「GET (application/xml)」を選択します。「テスト」をクリックします。テスト・クライアントによってリクエストが送信され、「テスト出力」セクションに結果が表示されます。テスト・クライアントでは、デフォルトで「rawデータのビュー」が表示されます。次のイメージは、application/xmlリクエストに対するレスポンスを示しています。
    RESTful Webサービス・テスターの「rawデータのビュー」ウィンドウ

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

  • 「表形式ビュー」は、結果のドキュメントにあるすべてのURIを表示するフラットなビューです。現在このビューには、コンテナ-被コンテナ関係が許可されていないという警告のみが表示されます。
  • 「rawデータのビュー」は実際に返ってきたデータを表示します。選択したMIMEタイプ(application/xmlまたはapplication/json)により、表示されるデータはそれぞれXMLまたはJSON形式です。
  • 「サブリソース」タブには、ルート・リソースとサブリソースのURLが表示されます。RESTful Webサービスはデータベースのエンティティ・クラスに基づいており、ルート・リソースはデータベース表を、サブリソースは列を表します。
  • 「ヘッダー」タブにはHTTPヘッダー情報が表示されます。
  • 「HTTPモニター」タブに、送受信された実際のHTTPリクエストおよびレスポンスが表示されます。

ブラウザを閉じ、IDEに戻ります。

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」を選択し、「終了」をクリックします。

注意:すでにプロジェクトを作成してある場合は、「プロジェクト」ウィンドウで「プロジェクト」ノードを右クリックし、ポップアップ・メニューで「プロパティ」を選択すると、Spring Web MVCフレームワークのサポートを追加できます。「プロジェクト・プロパティ」ウィンドウで、「フレームワーク」カテゴリを選択し、「追加」をクリックして「Spring Web MVC」を選択します。

プロジェクトへの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. 「プロジェクト」ウィンドウでSpring RESTful Web Serviceプロジェクトのノードを右クリックし、ポップアップ・メニューで「プロパティ」を選択した後、「プロジェクト・プロパティ」ウィンドウで「ライブラリ」カテゴリを選択します。
    プロパティ・ノードを示すコンテキスト・メニュー

    または、「プロジェクト」ウィンドウでプロジェクトの「ライブラリ」ノードを右クリックし、「JAR/フォルダの追加」を選択します。

  4. 「JAR/フォルダの追加」をクリックし、ファイル・システム・ブラウザでaopalliance.jarを見つけます。「開く」をクリックします。

    絶対パス参照を使用します。

    aopalliance.jarの参照
  5. aopalliance.jarファイルがライブラリに含められました。「OK」をクリックします。
    追加された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開発機能に関するご意見やご提案を送信したり、サポートを受けたり、最新の開発情報を入手したりできます。

get support for the NetBeans

Support


By use of this website, you agree to the NetBeans Policies and Terms of Use. © 2013, Oracle Corporation and/or its affiliates. Sponsored by Oracle logo