NetBeans 7でのRESTful Webサービスの作成: パート1

目的

このチュートリアルでは、NetBeans 7でRESTful Webサービスを構築する方法について説明します。

所要時間

約30分

概要

 

Representational State Transfer(REST)は、SOAPおよびWeb Services Description Language(WSDL)ベースのWebサービスに代わる、よりシンプルなWebサービス・モデルです。 RESTfulアプローチを使用したWebサービスの構築は、その軽量性により、一般的なWebサービス・モデルとなりつつあります。

RESTful Webサービスを使用すると、XMLやJSONなどの形式を使用してHTTP経由でメッセージを交換できます。 RESTful WebサービスはURIで識別可能なWebリソースの集合にすぎず、少数の操作(GET、PUT、POST、DELETE)を使用して処理できます。 RESTful APIを介してシステム・リソースを公開すると、柔軟にアプリケーションを統合できます。

RESTはアーキテクチャ上の方式であり、テクノロジーではありません。 Java仕様(JSR 311)では、JavaでRESTを実装する方法が説明されています。

この標準にはいくつかの実装があります。 公式なリファレンス実装はJerseyであり、開発と本番でもっとも広く使用されています。

NetBeans 7.1は、JSR-311(Java API for RESTful Web Services – JAX-RS)とJAX-RSのリファレンス実装であるJerseyを使用した、RESTful Webサービスの迅速な開発をサポートしています。 このIDEはサービスの構築とテストに加えて、これらのサービスにアクセスするクライアント・アプリケーションの作成をサポートします。 次に、NetBeansで提供されるRESTful機能を示します。

このチュートリアルで実施する内容は、次のとおりです。

 

ソフトウェア要件とハードウェア要件

Windowsプラットフォームでこのチュートリアルを実行するには、次のソフトウェアが必要です。 ソフトウェアは次に示す順序でインストールする必要があります。

前提条件

 

データベース接続の作成

Java DBデータベース・サーバーは、NetBeansに含まれています。 ここでは、Java DBをデータベース・サーバーとして使用します。 次の手順では、データベースplayerDBを作成します。

 

.

NetBeansからJava DBデータベースを起動するには、次の手順を実行します。

a. 「Services」をクリックします。
b. 「Databases」ノードを展開します。
c. 「Java DB」アイコンを右クリックします。
d. 「Start Server」を選択します。


Outputウィンドウに次の出力が表示され、DBサーバーが起動されたことが分かります。

JDKビルドの更新によって、DBserverバージョンがスクリーンショットとは異なる場合があります。

.

playerDBデータベースを作成するには、次の手順を実行します。


a. 「Java DB」アイコンを右クリックし、「Create Database」を選択します。


b. 次のデータベース情報を入力します。

Database Name: playerDB
User Name: john
Password: john
Confirm Password:john

C. 「OK」をクリックします。

 

Databasesアイコンの下にデータベースが作成され、データベース接続が追加されます。

 

.

新しく作成したplayerDBデータベースに接続するには、次の手順を実行します。

a. 「jdbc:derby://localhost:1527/playerDB」接続を右クリックします。

b. 「Connect」を選択します。

.

playerDBデータベース内に表を作成し、データを挿入します。

a. NetBeansで「File」→「Open File」を選択します。

b. ファイル・ブラウザで、前提条件の項に示したファイルを解凍したディレクトリへ移動します。

playersDB.sql」を選択します。

c. 「Open」をクリックします。 SQLエディタに自動的にスクリプトが表示されます。

d. SQLエディタのツールバーにあるConnectionドロップダウン・ボックスから「jdbc:derby://localhost:1527/playerDB」を選択します。

e. 「Run SQL」アイコンをクリックし、SQL文を実行します。


.

データベースの内容を確認します。

a. Servicesウィンドウで、Databasesノードの下の「jdbc:derby://localhost:1527/playerDB」接続を展開します。
b. 「connection」を右クリックし、「Refresh」を選択します。
c. 「john」スキーマを展開します。 Tables、Views、Proceduresというノードが表示されます。


d. 「Tables」ノードを展開し、PLAYER表とTEAM表を表示します。


e. 「PLAYER」表ノードを右クリックし、「View Data」を選択します。

SQLコマンド・ウィンドウが開き、表に含まれるデータを表示するSQLコマンドが実行されます。

f. TEAM表に対しても、上記手順を繰り返します。

サンプルWebアプリケーションの構築

 

RESTful Webサービスを作成するには、Java Webアプリケーションのプロジェクトが必要です。 ここでは、デモ用のJava WebプロジェクトとしてPlayerServerを作成します。

 

.

新しいJava Webプロジェクトを作成するには、「File」→「New Project」の順に選択します。

 

.

Categories列から「Java Web」を選択し、Projects列から「Web Application」を選択して、「Next」をクリックします。

 

.

次の手順を実行します。

a. プロジェクト名としてPlayerServerを指定します。
b. 「Next」をクリックします。

.

Server and SettingsウィンドウでServerとしてGlassFish Serverが選択されていることを確認し、「Finish」をクリックします。

 

.

サーバーを起動するには、次の手順を実行します。

a. 「Projects」タブを開きます。

b. 「PlayerServer」プロジェクトを右クリックします。

c. 「Run」を選択します。

これによってGlassFishサーバーが起動され、アプリケーションがデプロイされます。

アプリケーションのデプロイが成功すると、ブラウザにデフォルトのjspページ(URL:http://localhost:8080/PlayerServer/)が開き、"Hello World"と表示されます。

 

RESTful Webサービスの生成

 

Javaを使用したRESTful Webサービスの作成では、データベースへの通信にJava Persistence APIを使用します。 NetBeans IDEを使用すると、同じプロセスでエンティティ・クラスとRESTful Webサービスを作成するか、または既存のエンティティ・クラスからRESTful Webサービスを作成できます。

ここでは、RESTful Services from Databaseウィザードを使用して、同じプロセスでエンティティ・クラスとRESTful Webサービスを生成する方法を紹介します。

RESTful Webサービスを生成するには、次の手順を実行します。

PlayerServer」を右クリックし、「New」→「Other」→「Web Services」→「RESTful Web Services from Database」の順に選択します。 Database Tablesパネルに、New RESTful Web Serviceウィザードが開きます。

.

Database Tablesウィンドウで「Data Source」を選択します。

.

次に、ドロップダウン・リストから「New Data Source」を選択します。

a. Create Data Sourceウィンドウで次の情報を入力します。

  • JNDI namejdbc/playerDB
  • Database connection: jdbc:derby://localhost:1527/playerDB[john on JOHN]」を選択します。

b. 「OK」をクリックします。

Available Tables列にPLAYER表とTEAM表が表示されます。

c. 「Add All」をクリックします。 Selected Tables列にPLAYER表とTEAM表が表示されます。

 

d. 「Next」をクリックします。

 

 

.

Entity Classesウィンドウで次の手順を実行します。

a. パッケージ名としてcom.playerentityを入力します。

b. 「Next」をクリックします。

 

.

Generated Classesウィンドウで、デフォルト値のままにして「Finish」をクリックします。

 

.

Rest Resources Configurationウィンドウで「OK」をクリックします。

 

.

Projectsペインで次の手順を実行します。

a. 「PlayerServer」プロジェクトを選択して展開します。

b. プロジェクトの「source packages」を展開します。

c. 「com.playerentity」パッケージを展開します。

d. Player.javaおよびTeam.javaというエンティティ・クラスが作成されていることを確認します。

e. 「RESTful Web Services」フォルダを展開し、PlayerFacadeREST[com.playerentity.player]およびTeamFacadeREST[com.playerentity.team]というRESTful Webサービスが作成されていることを確認します。

 

生成されたこれら2つのWebサービスが、ここで使用するアプリケーションのRESTフロントエンドになります。 各エンティティに対して、すべてのエンティティ・インスタンスを表示したリソースが提供されています。

RESTful Webサービスのテスト

 

次の項では、Jerseyが提供するテスト・フレームワークで生成されたテストを使用して、RESTful Webサービスをテストする方法を紹介します。

 

.

Webサービスのテスト・クライアントを生成するには、次の手順を実行します。
a. 「PlayerServer」プロジェクトを選択します。
b. 「Test RESTful Web Services」を右クリックします。

次のスクリーンショットに示すとおり、Configure REST Test Clientウィンドウが開きます。

.

Web Test Client in Project」を選択し、「Browse」をクリックします。

 

 

 

.

a. Select Projectダイアログ・ボックスで、「PlayerServer」を選択して「OK」をクリックします。

b. Configure Rest Test Clientウィンドウが表示されたら、「OK」をクリックします。

サーバーが起動され、アプリケーションがデプロイされます。 デプロイが完了するとブラウザにアプリケーションが開き、それぞれのWebサービスに対するリンクが表示されます。

 

左側には、com.playerentity.teamcom.playerentity.playerという一連のルート・リソースが表示されます。

.

Webサービスをテストするには、次の手順を実行します。

a. リソース・ノードを1つ(例:com.playerentity.team)選択します。
b. "Choose method to test"フィールドで「GET (application/json)」または「GET (application/xml)」を選択します。
c. 「Test」をクリックします。

 

テスト・クライアントからリクエストが送信され、Test Outputセクションに結果が表示されます。 テスト・クライアントでは、デフォルトでRaw Viewが表示されています。

d. 出力を確認します。

application/xmlリクエストに対するレスポンス。

application/jsonリクエストに対するレスポンス。

JSONがRESTベースのアプリケーションで広く使用されているのは、この形式がXMLよりもコンパクトであるためです。

また、JSONはJavaScriptをはじめとする、もっとも一般的なプログラミング言語で簡単に使用できます。

e. 同様に、「com.playerentity.player」ノードを選択し、Webサービスをテストします。

まとめ

このチュートリアルでは、RESTful Webサービスの概要が提供されています。 NetBeansを使用すると、RESTベースのアプリケーションを素早く開発し、テストできることを学習しました。

参考資料

 

著者

Hardware and Software Engineered to Work Together Copyright © 2011, Oracle and/or its affiliates. All rights reserved