コネクションプール
注意!! このページで作成しているのは、poolman と言う名前を付けてしまったのですが、世間にはすでにPoolMan と呼ばれるソフトウェアが存在しました。申し訳ありませんが、そちらが目的の方はここをご参照ください。まぎらわしい名前を付けて申し訳ありません!!
売り物のアプリケーションサーバなどを使えるときには、コネクションプールが付いてくる事が多い。しかし、tomcatなどを使う時には、JDBCのgetConnection()に大きなコストがかかることもある。
良いプログラマとしては、自前のエディタ、メモリ管理ルーチン、コネクションプール、スレッドプールあたりは持っていなければならない。と言う事で、JDK1.3のプロクシオブジェクトの使い方の練習も兼ねて、コネクションプールを実装してみた。
現在のバージョンでは、コネクションは増える一方だし、一度エラーの出たコネクションを削除する機能もないが、JUnitでテストを行う場合などにこのコネクションプールを使用すると劇的にパフォーマンスを改善することができる。
バイナリをダウンロードしたら、以下の二つの使い方ができます。
- JDBCドライバとして使う
- Class.forName("net.wizard_limit.poolman.ConnectionPoolDriver");
でドライバを登録する。
- URLに、"jdbc:poolman:元のURL"、ユーザ名とパスワードは元のものを指定して DriverManager.getConnection(String url, String user, String passwd)を呼び出す。
DriverManager.getConnection(String url, Properties info)バージョンも利用可。
- DriverManagerの変わりに使う
- 元の呼び出しが、DriverManager.getConnection(url, user, password)だった場合、そのままConnectionPool.getInstance(url, user, password).getConnection()に変換できる。
- DriverManager.getConnection(url, info)も同じ。
※ Properties info の部分は、そのまま元のドライバに渡されますが、以下のキーでコネクションプールの挙動を変えることができます。
プロパティ | 意味 | デフォルト値/必須 |
poolman:debugLevel | デバッグレベル(0〜2) | 0 |
poolman:debugLog | デバッグログファイル名 | 標準出力 |
poolman:errorLog | エラーログファイル名 | 標準エラー出力 |
poolman:driver | 実際に接続するJDBCドライバクラス名 | なし |
poolman:closeCheckIntervalSec | 解放された回線のチェック間隔(秒) | 60 |
false@wizard-limit.net