GlassFish 4.1でのJNDIコネクションプーリングの設定方法
GlassFish 4.0でも手順は同じですが、4.1では管理コンソール画面が英語しかありません。
今回のDBはPostgreSQLですが、どのDBでも基本的に同じのはずです。
Cドライブ直下にGlassfish 4.1がインストールされているものとします。
JDBCドライバの配置
まず、C:\glassfish4.1\glassfish\domains\domain1\libフォルダに、JDBCドライバのJARファイルを置きます。
(GlassFishはまだ起動しないでください)
注意してほしいのは、アプリケーション側で使用しているものと同じバージョンを使うということです。
バージョンが違っていたりすると、うまく動きません。
コネクションプールの作成
次に、GlassFishを起動し、管理コンソール画面(http://localhost:4848/)を開きます。
画面左の[Common Tasks]から、[Resources]-[JDBC]-[JDBC Connection Pools]を選択すると、下記のような画面が表示されます。
ここから、コネクションプールを作ります。
[New...]ボタンをクリックすると、下記のような画面になります。
[Pool Name]には任意の名前を付け、[Resource Type]と[Database Driver Vendor]を選択して、[Next]をクリックします。
次の画面はこんな感じです。
下にスクロールすると、各種プロパティを設定する欄があるので、適当な値に設定したら、[Finish]ボタンをクリックします。
コネクションプールが作成され、一覧画面に追加されました。
接続確認をします。
上記の画面で、作成したコネクションプールをクリックします。
下記の画面の[Ping]ボタンをクリックし、「Ping Succeeded」と表示されれば成功です。
もし成功しなかったら、JDBCドライバが配置されていなかったり、プロパティ値が間違っていたりする可能性がありますので、見直してください。
JNDI名の設定
作成したコネクションプールを使うための、JNDI名を設定します。
画面左の[Common Tasks]から、[Resources]-[JDBC]-[JDBC Resources]を選択すると、下記のような画面が表示されます。
[New...]ボタンをクリックすると、下記のような画面になります。
[JNDI Name]に任意の名前を入力します。名前は「jdbc/」で始めるのが慣習のようです。
[Pool Name]で、先ほど作成したコネクションプールを選択して、[OK]をクリックします。
JDBCリソースが作成され、一覧画面に追加されました。
これで完了です。
プログラムからの呼び出し
Javaプログラムではこんな感じです。
DataSource ds = (DataSource) InitialContext.doLookup("jdbc/hoge");
<?xml version="1.0" encoding="UTF-8"?> <persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"> <persistence-unit name="empPU" transaction-type="JTA"> <jta-data-source>jdbc/hoge</jta-data-source> ・・・
NetBeansでの作成
NetBeansだと、GlassFishの管理コンソールを触ることなく、JDBCリソースを作成できます。
[新規]→[GlassFish]-[JDBC接続プール]、[JDBCリソース]から作成できます。
しかも、既存のデータベース接続から作成するため、プロパティ値の設定が必要ナシ!
libフォルダへのJDBCドライバの配置は、アプリケーションのデプロイ時に自動で行われる!
素晴らしい!!!
ただし注意していただきたいのは、libフォルダに配置されるJDBCドライバは、アプリケーションで使われているものではなく、NetBeansのデータベース接続で利用しているものだということです。
両者のバージョンが微妙に異なっていると、接続に失敗するので注意してください。