NetBeansとJavaEEを用いて、ポケモンの日本語名、英語名、ドイツ語名、フランス語名、韓国語名を返すRESTfulなAPIを開発してみようという記事のDB接続編です。
“NetBeansとJavaEEで、ポケモンの日英仏独韓の名前を返すRESTなAPIを開発してみた - 実装編 -”の続きです。もうひとつ前に準備編もあります。
DB設定の準備
今回使用したDB情報
テーブル名は準備編にも出ている通りですが、DB名は「_pkmn_db」とし、その他はデフォルト。
- ホスト: kt-kiyoshi.com
- ポート: 3306
- DB名: _pkmn_db
MySQLのJDBCドライバを用意
今回使用するMySQLのバージョンに合わせ、JDBCドライバをダウンロードします。執筆時点での最新は5.1.38でした。
プルダウンは「Platform Independent」(たぶんデフォルトでこれになってる)を選択し、「Platform Independent (Architecture Independent), ZIP Archive」をDLします。
DLしたZIPファイルを解凍し、中にある「mysql-connector-java-5.1.38-bin.jar」をGlassfishのインストールディレクトリ内にあるlib/extの下に配置します。
今回は以下のような具合になりました。
XXXXXX:ext XXXXXX$ pwd
/Applications/NetBeans/glassfish-4.1.1/glassfish/domains/domain1/lib/ext
XXXXXX:ext XXXXXX$ ls -l
total 1928
-rw-r--r--@ 1 XXXXXX admin 983914 12 2 09:02 mysql-connector-java-5.1.38-bin.jar
GlassFishの設定
JDBCドライバの配置が完了したので、続いて、GlassFishに接続プールを設定します。NetBeans上でGlassFishを起動し、更にドメイン管理コンソールを開きます。
GlassFish起動 | ドメイン管理コンソール |
---|---|
「ドメイン管理コンソールの表示」を押下すると、デフォルトのブラウザで以下のような管理画面が開きます。
左のTreeにある「Resources -> JDBC -> JDBC Connection Pools」を開き、右の 「NEW」ボタンを押下し、新しいConnection Poolの作成を行います。
Pool Name | PkmnPool |
---|---|
Resource Type | javax.sql.DataSource |
Database Driver Vendor | MySql |
と入力し、右上の「NEXT」ボタンを押します。(本来ならAdditional Propertiesの入力に進めるはずが。。)
エラーが発生
何やらここでエラーになって先へ進めないパターンがあるらしいので、DB接続設定は直接ファイルに書き込むことにします。(ユーザ名やパスワードは適切なものを入力してください。)
cd /Applications/NetBeans/glassfish-4.1.1/glassfish/domains/domain1/config
vi domain.xml
<resources>
<jdbc-resource pool-name="PkmnPool" jndi-name="jdbc/_pkmn_db" object-type="system-all"></jdbc-resource>
中略----------------------------
<jdbc-connection-pool datasource-classname="com.mysql.jdbc.jdbc2.optional.MysqlDataSource" is-isolation-level-guaranteed="false" res-type="javax.sql.DataSource" name="PkmnPool">
<property name="DatabaseName" value="_pkmn_db"></property>
<property name="User" value="XXXXXX"></property>
<property name="Password" value="YYYYYY"></property>
<property name="URL" value="jdbc:mysql://127.0.0.1/_pkmn_db"></property>
<property name="serverName" value="127.0.0.1"></property>
</jdbc-connection-pool>
</resources>
これで、Connection Poolの作成とJDBC Resourceの作成も完了です。改めて、ドメイン管理コンソール上で確認してみると...
PkmonPoolが出現
ちなみに、同じく管理コンソール上の「JDBC Resources」のほうにも、jdbc/_pkmn_dbが追加されているのが分かるかと思います。
接続の確認
左のTreeのConnection Poolから、作成した「PkmnPool」を選択し、「Edit JDBC Connection Pool」という画面を開きます。上部に3つ並んだボタンのうち、一番右の「Ping」を押下し、次のようになれば成功です。
永続性ユニットの作成
NetBeansに戻って、プロジェクト名を右クリックし、「新規 -> その他」から「持続性 -> 持続性ユニット」を選択します。
新規 -> その他 | 持続性 -> 持続性ユニット |
---|---|
次の入力項目は下記のように設定し、「終了」を押下します。
持続性ユニット名 | 持続性ユニット名 |
---|---|
永続性プロバイダ | EclipseLink(JPA 2.1)(デフォルト) |
データ・ソース | jdbc/_pkmn_db |
すると、プロジェクトツリーに「persistence.xml」が作成されます。開いてみると、以下のような画面となります。(XMLファイルとしても編集可能)
これで、準備編、実装編”で作ってきたプログラム群と合わせて、ポケモンの日英仏独韓の名前を返すRESTなAPIが動作します。
ビルドとか諸々すっ飛ばしますが、プロジェクト名を右クリックして「実行」で起動します。
(動作確認(全件取得):https://kt-kiyoshi.com:8080/pkmnAPI/rest/pkmn/getAll)
本当は、JSONP形式で返したり、GET以外のメソッド作ったり(任意のSQLとか)、実際のサーバに置いてみたりとか、色々拡張したいのだけど、それらはまた折を見てやりたいと思います。
バックナンバー
“NetBeansとJavaEEで、ポケモンの日英仏独韓の名前を返すRESTなAPIを開発してみた - 準備編 -”
“NetBeansとJavaEEで、ポケモンの日英仏独韓の名前を返すRESTなAPIを開発してみた - 実装編 -”