"GlassFish" からの "PostgreSQL" へのアクセス

5 8 月, 2008 (11:44) | GlassFish, OpenSource

社内で GlassFish アプリケーションサーバのコネクションプールに関する問い合わせが入ったので、備忘録的にそのセットアップ手順を残すことにしました。

コネクションプールの設定といっても、世の中に出回っている有償のアプリケーションサーバにある、管理画面からプールの追加をするのとなんら変わりはないように感じていますが、まぁ J2EE 準拠の管理画面は、あまり携わっていない人にとっては、結構しんどいかもしれませんね。

何を設定してよいのか分からないってこと、意外と知らない人が多かったりもします。又、プロジェクトから離れてしまうと、忘れてしまいがちにもなるし・・・(業務アプリケーションの開発者は、設定するのは最初の一度きりで、運用管理者と違ってその機会が少ないと言うこともあると言えます。)

と言うわけで、表題のとおり、 "GlassFish" にデフォルトで用意されている "__CallFlowPool" 、 "__TimerPool" 、 "DerbyPool" 、 "SamplePool" 以外に、 PostgreSQL へアクセスする為のコネクションプールの設定方法を記述します。

検証環境
CPU : Genuine Intel(R) CPU T1300 @ 1.66GHz
memory : 2G Bytes
OS : Microsoft WindwsXP Professional Version 2002 Service Pack 2
java : 1.5.0_15
GlassFish : GFv2 UR2
PostgreSQL : 8.1 ※ PostgreSQL のインストールと設定についてはこちらを参照してください。
ここでは省略いたします。

コネクションプールの設定方法は、管理画面から行う方法と、コマンドラインから "asadmin" コマンドを利用して設定する2とおりの方法が有ります。まずは前者の管理画面から設定する方法から設定手順を記述します。

1、管理画面からコネクションプールを設定する。

(1) PostgreSQL のインストールフォルダ配下の "jdbc" ディレクトリから、 "postgresql-8.1-411.jdbc2.jar" 、 "postgresql-8.1-411.jdbc2ee.jar" 、 "postgresql-8.1-411.jdbc3.jar" の3つのライブラリファイルを %GLASSFISH_HOME%\domains\domainname\lib 配下へコピーします。

(2)コマンドプロンプトから、ドメインを起動します。
>asadmin start-domain

(3)以下のURLで管理画面へアクセスしてログインします。
http://localhost:4848/

(4)管理画面左側のペインにある。"リソース"→ "JDBC" のツリーを順に展開し、"接続プール"をクリックし、右側ペインの"新規"をクリックします。
glassfishpool1.JPG

(5)以下の画面のように、"名前"(コネクションプール名称)と"リソースタイプ"、"データベースベンダー"を入力し
て、"次へ"をクリックします。
glassfishpool2.JPG
※因みにここで言う"名称"とは、 jndi とは別物です。これについては後ほど説明いたします。

(6)以下の画面にて、"データソースクラス名"と、追加プロパティの各項目を設定して"完了"をクリックします。
glassfishpool3.JPG glassfishpool4.JPG

(7)次に左側のペインから、 "JDBC リソース"をクリックし、右側ペインの"新規"をクリックし、 JDBC リソースへ登録します。
glassfishpool5.JPG

(8)以下の画面にて、 "JNDI 名"と"プール名"を入力して、"了解"をクリックします。
glassfishpool6.JPG
※以上で管理画面を使用した、接続プールの設定は全て完了です。

2、 asadmin コマンドによる接続プールの設定

(1)上記1-(1)に同じ

(2)上記1-(2)に同じ

(3)コマンドプロンプトから、以下のようなコマンドを入力して、接続プールを作成する。
>asadmin create-jdbc-connection-pool --datasourceclassname org.postgresql.ds.PGSimpleDataSource --restype javax.sql.DataSource --property portNumber=5432:password=password:user=jacksparrow:serverName=localhost:databaseName=torutuga PostgreSQL

(4)コマンドプロンプトから、以下のようなコマンドを入力して、 JDBC リソースに登録する。
>asadmin create-jdbc-resource --connectionpoolid PostgreSQL jndi/Postgres
※以上で完了になります。GUIに比べると、かなりシンプルですね。

3、作成したコネクションプールに問題がないか確認する。
・管理画面にアクセスしてログインし、左側ペインの"リソース"→"JDBC"→"接続プール"の順にツリーを展開し、該当の接続プールをクリックします。その後、右側ペインにある "Ping" をクリックして以下の画面のように画面上に、 "Ping が成功しました"と言うメッセージが表示されれば、コネクションプールの作成は成功です。
glassfishpool7.JPG

如何がでしたでしょうか?
さて上記1-(5)にてお話したプール名と JNDI の別ですが、これの理由としては以下が考えられます。
・DBMS を二重化し、障害が発生した時に、即座に接続先を切り替える為。

このコンフィグレーション方法は、 WebLogic 8.x でも似たような形になってます。(9.x 以降からはこういった設定にはなっていないようですが)
JNDI = コネクションプール、としてしまうと、プログラムコードがこれに依存してたりすると(多分リソースバンドルとか使ってこういうことは回避しているとは思われるが・・・)、容易に接続切り替えが出来ないですよね。

そういった運用都合への配慮から、あえてネーミングコンテキストへ登録する名称と、コネクションプールを切り離して使えるようにしているものと私は考察しています。

他に意見等あれば、どんどんここにコメントを残していただきたいです。

次回は 「 Mac OS X で GlassFish を使う」を執筆したいと思います。

簡単副業で収入アップ!

短期・日払い・高収入!稼げる情報満載♪

Write a comment





*
画像に書かれた文字を入力してください

スパム対策用画像
ログインすると画像認証なしで投稿できます

ホットワード GlassFish PostgreSQL アクセス アプリケーションサーバ
割引クーポンまとめ情報 - クー割