読者です 読者をやめる 読者になる 読者になる

Java EE 事始め!

主にJava EEについて、つらつらとマイペースに書いていきます。「Java EEを勉強するときに、一番最初に読んでもらえるブログ」を目指して頑張ります!

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はまだ起動しないでください)
注意してほしいのは、アプリケーション側で使用しているものと同じバージョンを使うということです。
バージョンが違っていたりすると、うまく動きません。
f:id:MasatoshiTada:20141204113136p:plain

コネクションプールの作成

次に、GlassFishを起動し、管理コンソール画面(http://localhost:4848/)を開きます。
画面左の[Common Tasks]から、[Resources]-[JDBC]-[JDBC Connection Pools]を選択すると、下記のような画面が表示されます。
f:id:MasatoshiTada:20141204113258p:plain

ここから、コネクションプールを作ります。
[New...]ボタンをクリックすると、下記のような画面になります。
[Pool Name]には任意の名前を付け、[Resource Type]と[Database Driver Vendor]を選択して、[Next]をクリックします。
f:id:MasatoshiTada:20141204114409p:plain

次の画面はこんな感じです。
f:id:MasatoshiTada:20141204114418p:plain

下にスクロールすると、各種プロパティを設定する欄があるので、適当な値に設定したら、[Finish]ボタンをクリックします。
f:id:MasatoshiTada:20141204114118p:plain

コネクションプールが作成され、一覧画面に追加されました。
f:id:MasatoshiTada:20141204114558p:plain

接続確認をします。
上記の画面で、作成したコネクションプールをクリックします。
下記の画面の[Ping]ボタンをクリックし、「Ping Succeeded」と表示されれば成功です。
f:id:MasatoshiTada:20141204114824p:plain

もし成功しなかったら、JDBCドライバが配置されていなかったり、プロパティ値が間違っていたりする可能性がありますので、見直してください。

JNDI名の設定

作成したコネクションプールを使うための、JNDI名を設定します。

画面左の[Common Tasks]から、[Resources]-[JDBC]-[JDBC Resources]を選択すると、下記のような画面が表示されます。
f:id:MasatoshiTada:20141204115200p:plain

[New...]ボタンをクリックすると、下記のような画面になります。
[JNDI Name]に任意の名前を入力します。名前は「jdbc/」で始めるのが慣習のようです。
[Pool Name]で、先ほど作成したコネクションプールを選択して、[OK]をクリックします。
f:id:MasatoshiTada:20141204115533p:plain

JDBCリソースが作成され、一覧画面に追加されました。
f:id:MasatoshiTada:20141204115628p:plain

これで完了です。

プログラムからの呼び出し

Javaプログラムではこんな感じです。

DataSource ds = (DataSource) InitialContext.doLookup("jdbc/hoge");

JPAのpersistence.xmlではこんな感じ。

<?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リソース]から作成できます。
f:id:MasatoshiTada:20141204124213p:plain

しかも、既存のデータベース接続から作成するため、プロパティ値の設定が必要ナシ!
libフォルダへのJDBCドライバの配置は、アプリケーションのデプロイ時に自動で行われる!
素晴らしい!!!

ただし注意していただきたいのは、libフォルダに配置されるJDBCドライバは、アプリケーションで使われているものではなく、NetBeansのデータベース接続で利用しているものだということです。
両者のバージョンが微妙に異なっていると、接続に失敗するので注意してください。