FeaturesPluginsDocs & SupportCommunityPartners

RESTful Web サービスを使用した MySQL データベースの公開

このチュートリアルでは、NetBeans IDE を使用して MySQL データベースを RESTful Web サービスの終了点として公開する方法を説明します。RESTful Web サービスプラグインを使用して、「sakila」というサンプルデータベースを GlassFish v2 上に配備します。このチュートリアルでは、次の作成方法を学習します。

  • MySQL へのデータベース接続
  • その接続を使用した新しいデータソース
  • MySQL データベースからのエンティティークラス
  • このエンティティークラスからの RESTful Web サービス

目次

このページの内容は NetBeans IDE 6.1 および 6.0 が対象です

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

ソフトウェアまたはリソース 必須バージョン
NetBeans IDE Web および Java EE の version 6.1 または 6.0
Java Development Kit (JDK) version 6 または
version 5
最新の安定版 MySQL (ダウンロード)。
「sakila」という MySQL のデータベースサンプル (ダウンロード)。
Java EE 互換の Web サーバーまたはアプリケーションサーバー Tomcat Web サーバー 6.0 および/または
GlassFish アプリケーションサーバー v2

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

このチュートリアルでは RESTful Web サービスのプラグインも必要です。IDE で「ツール」メニューの下にある「プラグイン」マネージャーを開き、「インストール済み」タブで「RESTful Web サービス」プラグインがインストールされているかを確認します。インストールされていない場合、「使用可能なプラグイン」タブから次のようにインストールします。

プラグインマネージャーからの RESTful

はじめに

MySQL は世界でもっとも人気のあるオープンソースのデータベースソフトウェアで、現在まで 1 億を超えるコピーがダウンロードまたは配布されています。速度、信頼性、および使いやすさに優れている MySQL は、ダウンタイム、維持、管理、およびサポートで発生する問題を削減できるため、企業の IT 部門マネージャーが好んで選択しています。

エンティティークラスを作成および公開することで、IDE は、データベースからの RESTful Web サービスの迅速な開発に対応できます。RESTful Web サービスは HTTP ヘッダーの動作を基にしたサービスです。RESTful アプローチを使用する Web サービスの構築は、インターネット上にサービスを配備するために、SOAP ベースのテクノロジを使用する代わりとして幅広く使用されています。これは、軽量かつ HTTP 経由でデータを直接送信できるためです。

Sun Microsystems による MySQL 買収の発表を記念して、このデモを最初に作成した Arun Gupta が、IDE を使用して MySQL データベースを RESTful Web サービスとして公開する方法を説明しています。

このチュートリアルを始める前に、次のページを確認することをお勧めします。

データベース接続の作成

IDE には MySQL Connector/J JDBC ドライバが含まれているため、MySQL データベースに接続できます。この課題の目標は、接続を作成することです。

  1. MySQL データベースを起動します。
    • Windows で、コマンド「mysqld-nt --user root --password=ルートユーザーのパスワード」を入力します。MySQL の bin をカレントディレクトリにするか、bin ディレクトリをパス上に設定しておく必要があります。MySQL が localhost に接続できないというエラーが表示された場合、MySQL サービス (「コントロールパネル」>「管理ツール」>「サービス」) を開始します。
    • UNIX システムの場合、MySQL ディレクトリから、コマンド「./bin/mysqld_safe」を入力します。
  2. IDE を起動します。「サービス」タブを開きます。「データベース」>「ドライバ」と展開します。MySQL のドライバを見つけます。存在しない場合は、「ドライバ」ノードを右クリックして「新規ドライバ」を選択し、ダイアログで MySQL Connector/J ドライバへのパスを入力します。

    ドライバを表示しているサーバーのタブ
  3. MySQL (Connector/J) ドライバのノードを右クリックし、「接続」を選択します。「データベースの新規接続」ダイアログが開きます。
  4. 「名前」および「ドライバ」のフィールドはデフォルト値のままにします。「データベースの URL」に「jdbc:mysql://localhost:sakila」と入力します。「ユーザー名」に「root」と入力し、パスワードに「root」ユーザーのパスワードを入力します。ダイアログは次のようになるはずです。終了したら「完了」をクリックします。
    My SQL への新規データベース接続の作成

Web アプリケーションプロジェクトの設定

この課題の目標は、新規の Web アプリケーションプロジェクトを作成することです。このプロジェクトではエンティティークラスと RESTful Web サービスを使用します。

  1. メインメニューから「ファイル」>「新規プロジェクト」(Ctrl-Shift-N) を選択します。「カテゴリ」で「Web」を選択します。「プロジェクト」で「Web アプリケーション」を選択して、「次へ」をクリックします。
  2. 「プロジェクト名」フィールドに「sakila」と入力します。「コンテキストパス」が /sakila になります。
  3. 「プロジェクトの場所」を使用コンピュータ上の任意のディレクトリにします。デフォルトの場所を受け入れても構いません。
  4. 「サーバー」で GlassFish を選択します。GlassFish は Java EE5 認定のアプリケーションサーバーで、NetBeans IDE の Web および Java EE インストールにバンドルされています。Tomcat Web サーバーなど GlassFish 以外のサーバーを使用する場合、サーバーの設定が必要になることがありますが、このチュートリアルでは扱いません。
  5. 「主プロジェクトとして設定」オプションは選択したままにして、「完了」をクリックします。IDE により Sakila プロジェクトフォルダが作成されます。このプロジェクトフォルダには、ソースおよび、プロジェクトの Ant 構築スクリプトなどのプロジェクトメタデータのすべてが含まれます。IDE で HellowWeb プロジェクトが開きます。開始ページである index.jsp がメインウィンドウのソースエディタで開きます。プロジェクトのファイル構造を「ファイル」ウィンドウ (Ctrl-2) で、論理構造を「プロジェクト」ウィンドウ (Ctrl-1) で表示できます。
    空プロジェクトの論理構造

データベースからのエンティティークラスの生成

この課題の目標は、sakila データベースからエンティティークラスを生成することです。

  1. 次のように、sakila ノードを右クリックして、「新規」>「データベースからのエンティティークラス」を選択します。


    DB ウィザードからのエンティティークラスの開始

  2. 「データベース表」パネルで、「データソース」ドロップダウンリストから「新しいデータソース」を選択します。「データソースを作成」ダイアログが開きます。
  3. 「JNDI 名」フィールドに「jndi/sakila」と入力します。「データベース接続」ドロップダウンフィールドから jdbc:mysql://localhost/sakila [デフォルトスキーマの root] を選択します。「了解」をクリックします。ダイアログが閉じ、「データベース表」パネルに戻ります。

    「データソースを作成」ダイアログ
  4. 「使用可能な表」で「film」をクリックし、「追加 >」をクリックします。「データベース表」ページは次の画像のようになるはずです。「次へ」をクリックします。

    データベース表の選択
  5. 「エンティティークラス」ページが開きます。「持続性ユニットを作成」をクリックし、次のようなデフォルトをすべて受け入れ、「作成」をクリックします。「エンティティークラス」ページに戻ります。
    「持続性ユニットを作成」ダイアログ
  6. 「パッケージ」で「sakila」と入力します。「エンティティークラス」ページは次のようになるはずです。
    新規エンティティークラスの完成したページ
  7. 「完了」をクリックします。IDE によりエンティティークラスが作成されます。

  8. 「プロジェクト」ウィンドウを表示します。画面は次のようになります。
    sakila パッケージを表示している「プロジェクト」ビュー

持続性ファイルの設定

データベースからのエンティティークラスの生成」で、持続性ユニットを作成しました。この持続性ユニットの設定は persistence.xml というファイルに保存されています。persistence.xml は「プロジェクト」ビューの「構成ファイル」ノードにあります。

ユーザー名とパスワードを渡すにはこの持続性ファイルを変更する必要があります。「XML」タブを開きます。ファイルを編集し、「toplink.jdbc.user」および「toplink.jdbc.password properties」を含めるようにします。これに対応するのが次のスニペットです (追加または変更する部分はボールド)。

<persistence-unit name="sakilaPU" transaction-type="JTA">
<jta-data-source>jndi/sakila</jta-data-source>
<properties>
<property name="toplink.jdbc.user" value="root"/> <property name="toplink.jdbc.password" value="root ユーザーのパスワード"/>
</properties>

</persistence-unit>

エンティティークラスからの RESTful Web サービスの生成

この課題の目標は、前の節で生成したエンティティークラスから RESTful Web サービスを生成することです。

  1. エンティティークラスを格納しているパッケージを右クリックし、「新規」>「エンティティークラスからの RESTful Web サービス」を選択します。
    ウィザードの選択
  2. 「新規 エンティティークラスからの RESTful Web サービス」ウィザードで、「すべてを追加」をクリックします。画面は次のようになります。
    エンティティークラスの選択
  3. 「次へ」をクリックします。「生成されるクラス」パネルが開きます。デフォルトをすべて受け入れ、「完了」をクリックします。IDE により、RESTful Web サービスが作成されます。

    「プロジェクト」ウィンドウの「RESTful Web サービス」ノードに、プロジェクトのすべての RESTful Web サービスが表示されます。[/films/] など、角カッコ内の値は URI テンプレートの値です。このノードをダブルクリックしてもソースファイルに移動できます。このビューではすべての HTTP メソッドとサブリソースロケータメソッドも表示されます。この場合でも、ノードをダブルクリックすることでメソッドに移動できます。

ここまででエンティティークラスと RESTful Web サービスが生成されたので、アプリケーションのテストを始めましょう。IDE には RESTful Web サービスのテストに便利なユーティリティーが備わっています。次の節でこれを使用します。

RESTful Web サービスのテスト

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

  1. 次のように、プロジェクトノードを右クリックして「RESTful Web サービスをテスト」を選択します。
    「プロジェクト」タブの「RESTful Web サービスをテスト」コンテキストメニュー

    サーバーが起動し、アプリケーションが配備されます。最後に、各 Web サービスのリンクが含まれるアプリケーションがブラウザ上に表示されます。
    RESTful サービスのテスト

  2. 左側にルートリソースの組があります。この場合、名前は languagesfilms です。

  3. 「Films」をクリックし、次に「テスト」または「http://localhost:8080/sakila/resources/films/」という URL をクリックします。結果は Film 表の RESTful 表示です。デフォルトでは、表から 10 レコードを表示し、各エントリでフィルムの ID と詳細エントリへの参照を返します。

    films の表

URL に「/?max=n」と追加することで、表示するエントリ数を増やせます。たとえば、「http://localhost:8080/sakila/resources/films/?max=40」とすると最初の 40 エントリを表示します。表の別のフィールドを表示するには、「converter.FilmRefConverter」クラスに取得メソッドを追加することで表示できます。たとえば次のようにします。

@XmlElement
public String getTitle() {
    return entity.getTitle();
    }
すでに返したフィールドに加え、getTitle メソッドがフィルムのタイトルを返します。表の別の列は「サービス」タブから、先ほど作成した sakila のデータベース接続を展開することで表示できます。



変更後の出力 (フィルムのタイトルを含めたあと) は次のようになります。

その他の課題

試せそうなアイデアをいくつか紹介します。

  • 前述の手順を使用して、別の表の RESTful の表現を作成する。
  • TOTD #10」の説明にあるように、jMaki でラップされている Yahoo または Dojo のデータ表からデータを表示する。
  • Hello JPA World」の説明にあるように、JSP ページのデータベースから取得したデータを表示する。
  • TOTD #15」または「Screencast #Web10」の説明にあるように、jMaki のデータ表を使用して CRUD アプリケーションを作成する。

MySQL を使用した JRuby-on-Rails アプリケーションはこちらで説明しています。「TOTD #9」では、MySQL を使用した JRuby-on-Rails アプリケーションで GlassFish の JDBC 接続プールを使用する方法を説明しています。

ここでの重要なメッセージは、NetBeans IDE を使用すると、MySQL が GlassFish で非常に簡単に使用できるという点です。


関連項目

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

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

Bookmark this page

del.icio.us furl simpy slashdot technorati digg
Companion
Projects:
MySQL Database Server   Open JDK: an Open SourceJDK   GlassFish Community: an Open Source Application Server    Mobile & Embedded Community    Open Solaris   java.net - The Source for Java Technology Collaboration   Virtual Box - full virtualizer  Open ESB - The Open Enterprise Service Bus Powered by