以前にGlassFish3でアプリをデプロイした後、JDBCドライバーが見つからないときの対処 - Webサービスで起業を目指すプログラマーblogという記事を書きました。
アプリを再デプロイするとJDBCドライバーが見つからなくなる現象が発生し、アプリにドライバーを含めることで解決すると書きました。
この状態で運用していたのですが、アプリを再デプロイするたびにドライバーがないとエラーになり、GlassFishの再起動をしないといけなくなりました。結局解決していなかったようです。
毎回こんな作業したくないので、今回徹底的に調べました。
結果的に、GlassFishでのPostgreSQLのデータソースの設定が誤っていたのが原因でした。
環境
OS | CentOS 6.4 x64 |
---|---|
DB | PostgreSQL 9.3 |
GlassFish | 3.1.2.2 |
手順
1.PostgreSQLのJDBCドライバーを公式サイトより取得します
http://jdbc.postgresql.org/download/postgresql-9.3-1100.jdbc4.jar
# wgetが使える場合直接ダウンロード wget http://jdbc.postgresql.org/download/postgresql-9.3-1100.jdbc4.jar
各環境に応じたドライバーは以下を参照してください
http://jdbc.postgresql.org/download.html
2.PostgreSQLのJDBCドライバーをGlassFishのlibディレクトリに配置します
/usr/local/glassfish3/glassfish/domains/domain1/lib/ext ※ GlassFishのインストルディレクトリは環境に合わせて変更して下さい
3.GlassFishのコンソールを開きます。
http://localhost:4848 ※ ホスト名は環境に合わせて変更して下さい
4.左のメニューより「リソース」→「JDBC」→「JDBC接続プール」を選択し、右側にある「新規」ボタンをクリックして接続プールを新規で作成します
5.ステップ1で以下のように入力し「次」をクリックします
プール名 | 好きな名前 |
---|---|
リソースタイプ | javax.sql.DataSource |
データベース・ドライバーのベンダー | Postgresql |
6.ステップ2で以下のように入力します
データソース・クラス名のプルダウン下のテキストボックスに入力する
データソース・クラス名 | org.postgresql.ds.PGPoolingDataSource |
---|
7.続いて画面下部にある追加プロパティで以下の5項目を残し、それ以外の項目を全て削除します。終わったら「終了」をクリックします
ServerName | サーバーのIP等 |
---|---|
PortNumber | 5432 (default) |
DatabaseName | データベース名 |
User | ユーザーID |
Password | パスワード |
8.GlassFishを再起動します
# 通常 /usr/local/glassfish3/bin/asadmin restart-domain # chkconfigに登録されている場合 service glassfish restart
PostgreSQLの接続プールとデータソース
PostgreSQLのデータソースのクラスは以下の2種類があり、プール処理の対応に違いがあります。
プール処理 | 実装クラス |
---|---|
なし | org.postgresql.ds.PGSimpleDataSource |
あり | org.postgresql.ds.PGPoolingDataSource |
GlassFishでウィザードに従ってデータソースを作成すると「PGSimpleDataSource」が選択されます。
設定が初めてだと全くわかりません。
今回の現象は、「PGSimpleDataSource」クラスを使用してDBに接続していたので、
アプリの再デプロイ等が発生すると、コネクションプールの扱いがおかしくなっていたように思います。
そもそもプールには対応していないクラスですから、エラーが発生してもおかしくないですね。
参考
アプリケーション: DataSource
java - Making datasource in Glassfish - Stack Overflow
「プロになるためのWeb技術入門」 ――なぜ、あなたはWebシステムを開発できないのか
- 作者: 小森裕介
- 出版社/メーカー: 技術評論社
- 発売日: 2010/04/10
- メディア: 大型本
- 購入: 57人 クリック: 1,242回
- この商品を含むブログ (34件) を見る