connectionpool
クラス ConnectionPoolDriver

java.lang.Object
  |
  +--connectionpool.ConnectionPoolDriver
すべての実装インタフェース:
java.sql.Driver

public class ConnectionPoolDriver
extends java.lang.Object
implements java.sql.Driver

このクラスはJDBC接続を管理し再利用するための、擬似的なJDBCドライ バクラスです。

データベースとの接続はオーバーヘッドが大きく、かなりの時間がかかっ てしまいます。そこで接続のプールを作り、使用しなくなった接続を切断 せずにプールに保存しておいて、後で再利用できるようにします。保存す る場所を接続プール、保存しておくことを接続プーリングと呼ぶことにし ます。

ただし、一つの接続を長く使い続けることのないように、一定時間使用 されていない接続や、一定回数使用された接続は切断するようにしていま す。それぞれの時間・回数は設定ファイルで指定します。デフォルトでは 5 秒と 5 回です(see: timeout, maxUse)。

このクラスは通常の JDBC ドライバと同様の使い方ができるように実装 されています。つまり、java.lang.Class.forName() でロー ドして、java.sql.DriverManager.getConnection() で接続 オブジェクトを取得するといった使い方になります。

接続を接続プールに返すには、Connection.close()を使用します。これ も、通常のJDBCドライバの接続オブジェクトと同じです。

したがって、接続プーリングを使用していないプログラムを、接続プー リングを使用するように変更するには、使用するドライバ名と接続先のデー タベースのURLを変更するだけです(設定ファイルを作成する必要もありま すが)。プログラム自体のロジックを変更する必要はありません。

このようなことができるのは、DriverManager.getConnection メソッド が返す接続オブジェクトが、実際の JDBC 接続オブジェクト (java.sql.Connection) を包んだラッパークラスであるプーリング接続ク ラス PoolingConnection だからです。プーリン グ接続オブジェクトは java.sql.Connection インタフェースを実装してい ます。プーリング接続オブジェクトに対して呼び出されるほとんどのメソッ ドはそのまま JDBC 接続オブジェクトに委譲されます。

ただし、Connection.close メソッドはオバーライドされているため、 実際には JDBC 接続を単純に切断するのではありません。PoolingConnection.close() メソッドが呼ばれた場合には、接続が使用されなくなったとみなして、接 続プールに保存するようにしています。

バージョン:
$Revision: 3.2 $
作成者:
TSUTSUMI Kikuo
関連項目:
PoolingConnection, PoolingConnection.close()

フィールドの概要
static java.lang.String CONFIG_FILE
          設定ファイルのデフォルト名称。
protected static ConnectionPoolDriver connectionPoolDriver
          接続プール。
protected static java.sql.Driver driver
          JDBCドライバクラス。
protected static java.lang.String driverName
          JDBCドライバ名。
protected static java.util.Properties jdbcProperties
          設定ファイルで指定された JDBC 接続引数としての、任意の文字列タグ および値のペアのリストです。
protected static int maxConnections
          アクティブな最大接続数。
protected static int maxPoolSize
          接続プールの最大サイズ。
protected static int maxUse
          一つの接続の最大再利用回数。
static java.lang.String PROTCOL
          接続プーリングドライバのプロトコル。
protected static java.lang.String protocol
          接続先プロトコル。
static java.lang.String REVISION
          接続プーリングパッケージのリビジョン。
protected static long timeout
          接続プール中の使用されていない接続の生存期間(ms)。
 
メソッドの概要
(パッケージプライベート) static void ()
          スタティックブロック。
 boolean acceptsURL(java.lang.String url)
          指定されたURLに接続できると判断した場合は true を返します。
static void clear()
          接続プールから未使用の接続を取り除きます。
 java.sql.Connection connect(java.lang.String url, java.util.Properties info)
          接続プールから使用可能な接続を取り出す。
static void destroy()
          接続プールを破棄します。
static java.lang.String getDriverName()
          JDBCドライバ名。
static java.util.Properties getJdbcProperties()
          JDBC接続引数。
 int getMajorVersion()
          ドライバのメジャーバージョンを取得します。
static int getMaxPoolSize()
          接続プールの最大サイズ。
static int getMaxUse()
          一つの接続の最大再利用回数。
 int getMinorVersion()
          ドライバのマイナーバージョンを取得します。
 java.sql.DriverPropertyInfo[] getPropertyInfo(java.lang.String url, java.util.Properties info)
          この疑似JDBCドライバが使用するJDBCドライバ(設定ファイルで指定) の有効なプロパティについての情報を取得します。
static java.lang.String getProtocol()
          接続先プロトコル。
static long getTimeout()
          接続プール中の使用されていない接続の生存期間(ms)。
 boolean jdbcCompliant()
          このJDBC疑似ドライバが使用する JDBC ドライバが、JDBC CompliantTM であるかどうかを通知します。
(パッケージプライベート) static void println(java.lang.String s)
           
static void printProperties()
          設定ファイルから読み込んだプロパティを表示します。
 
クラス java.lang.Object から継承したメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

CONFIG_FILE

public static final java.lang.String CONFIG_FILE
設定ファイルのデフォルト名称。

PROTCOL

public static final java.lang.String PROTCOL
接続プーリングドライバのプロトコル。

REVISION

public static final java.lang.String REVISION
接続プーリングパッケージのリビジョン。

connectionPoolDriver

protected static ConnectionPoolDriver connectionPoolDriver
接続プール。使用中の接続オブジェクトと未使用の接続オブジェクトを 管理します。

driverName

protected static java.lang.String driverName
JDBCドライバ名。設定ファイルの driverName プロパティの値が設定さ れます。

driver

protected static java.sql.Driver driver
JDBCドライバクラス。設定ファイルのプロパティ driverName で指定さ れた JDBC ドライバオブジェクトを参照します。

protocol

protected static java.lang.String protocol
接続先プロトコル。設定ファイルの driverName がアクセスに使用する プロトコル名です。設定ファイルの protocol プロパティの値が設定さ れます。

maxPoolSize

protected static int maxPoolSize
接続プールの最大サイズ。設定ファイルの maxPoolSize プロパティの値 が設定されます。1 以上の値を指定します。ただし、-1 が指定された場 合は接続プールサイズは無制限になります。それ以外の値が指定された 場合はデフォルトの値を使用します。デフォルトは 100 接続です。

maxUse

protected static int maxUse
一つの接続の最大再利用回数。設定ファイルの maxUse プロパティの値 が設定されます。1 以上の値を指定します。 -1 が指定された場合は再 利用回数は無制限になります。それ以外の値が指定された場合はデフォ ルトの値を使用します。デフォルトは 5 回です。

timeout

protected static long timeout
接続プール中の使用されていない接続の生存期間(ms)。設定ファイルの timeoutSec プロパティの値を 1000 倍した値が設定されます。1 以上の 値を指定します。ただし、-1 が指定された場合は生存期間は無制限にな ります。それ以外の値が指定された場合はデフォルトの値を使用します。 デフォルトは 5 秒(5000ms)です。

maxConnections

protected static int maxConnections
アクティブな最大接続数。ドライバのメタデータから読み込みます。

jdbcProperties

protected static java.util.Properties jdbcProperties
設定ファイルで指定された JDBC 接続引数としての、任意の文字列タグ および値のペアのリストです。通常は、少なくとも "user" プロパティ と "password" プロパティは指定しなければなりません。
メソッドの詳細

static void ()
スタティックブロック。クラスがロードされたときに実行されます。ド ライバーオブジェクトの作成、設定ファイルの読み込み、ドライバの登 録、JDBCドライバの参照を行います。

connect

public java.sql.Connection connect(java.lang.String url,
                                   java.util.Properties info)
                            throws java.sql.SQLException

接続プールから使用可能な接続を取り出す。使用可能な接続がプール されていなければ、指定された URL にデータベース接続を試みます。指 定されたURLに間違ったドライバを接続しようとしていることがわかった 場合は、null を返します。データベースに接続を試みる場合、指定され たJDBC 接続引数を使用して接続します。

定義:
インタフェース java.sql.Driver 内の connect
パラメータ:
url - データベース接続URL。
info - 接続引数としての任意の文字列タグおよび値のペアのリス ト。または null。通常は、少なくとも "user" プロパティと "password" プロパティは指定しなければならない。
戻り値:
URLへの接続を表す接続オブジェクト。URLのプロトコルが認識 できない場合は null。
例外:
java.sql.SQLException - データベースアクセスエラーが発生した場合。

acceptsURL

public boolean acceptsURL(java.lang.String url)
                   throws java.sql.SQLException

指定されたURLに接続できると判断した場合は true を返します。ド ライバは、urlで指定されたサブプロトコルを認識する場合は true、認 識できない場合は false を返します。

定義:
インタフェース java.sql.Driver 内の acceptsURL
パラメータ:
url - 接続先のデータベースのURL。
戻り値:
指定された URL にドライバが接続できる場合は true。
例外:
java.sql.SQLException - データベースアクセスエラーが発生した場合。

getPropertyInfo

public java.sql.DriverPropertyInfo[] getPropertyInfo(java.lang.String url,
                                                     java.util.Properties info)
                                              throws java.sql.SQLException

この疑似JDBCドライバが使用するJDBCドライバ(設定ファイルで指定) の有効なプロパティについての情報を取得します。

定義:
インタフェース java.sql.Driver 内の getPropertyInfo
パラメータ:
url - 接続先のデータベースのURL。
info - 接続オープンのために送られるタグ/値ペアの推奨リスト。
戻り値:
可能なプロパティを記述する DriverPropertyInfo オブジェク トの配列。プロパティが必要ない場合は、この配列は空になることもあ る。
例外:
java.sql.SQLException - データベースアクセスエラーが発生した場合。

getMajorVersion

public int getMajorVersion()

ドライバのメジャーバージョンを取得します。最初はこの値は 1 で なければなりません。

定義:
インタフェース java.sql.Driver 内の getMajorVersion
戻り値:
このドライバのメジャーバージョン。

getMinorVersion

public int getMinorVersion()

ドライバのマイナーバージョンを取得します。最初はこの値は 0 で なければなりません。

定義:
インタフェース java.sql.Driver 内の getMinorVersion
戻り値:
このドライバのマイナーバージョン。

jdbcCompliant

public boolean jdbcCompliant()

このJDBC疑似ドライバが使用する JDBC ドライバが、JDBC CompliantTM であるかどうかを通知します。

定義:
インタフェース java.sql.Driver 内の jdbcCompliant

getDriverName

public static java.lang.String getDriverName()
JDBCドライバ名。設定ファイルの driverName プロパティの値を返しま す。

getProtocol

public static java.lang.String getProtocol()
接続先プロトコル。設定ファイルの protocol プロパティの値を返しま す。設定ファイルの driverName で指定されたドライバががアクセスに 使用するプロトコル名です。

getMaxPoolSize

public static int getMaxPoolSize()
接続プールの最大サイズ。設定ファイルの maxPoolSize プロパティの値 を返します。

getMaxUse

public static int getMaxUse()
一つの接続の最大再利用回数。設定ファイルの maxUse プロパティの値 を返します。

getTimeout

public static long getTimeout()
接続プール中の使用されていない接続の生存期間(ms)。設定ファイルの timeoutSec プロパティの値を 1000 倍した値を返します。

getJdbcProperties

public static java.util.Properties getJdbcProperties()
JDBC接続引数。設定ファイルで指定された JDBC 接続引数としての、任 意の文字列タグおよび値のペアのリストを返します。

clear

public static void clear()
                  throws java.sql.SQLException

接続プールから未使用の接続を取り除きます。

未使用の接続は、タイマーオブジェクトによって生存期間を監視され ています。したがって、アプリケーションのすべてのスレッドが終了し ても、タイマースレッドが存在するため、アプリケーションがすぐには 終了しない場合があります。そのような場合にこのメソッドを呼ぶと、 未使用接続をすべて破棄するため、タイマースレッドを終了させること ができます。

例外:
java.sql.SQLException - 接続の切断に失敗した場合。

destroy

public static void destroy()
                    throws java.sql.SQLException

接続プールを破棄します。複数のスレッドから接続プールを使用して いる場合、このメソッドを呼び出すと、他のスレッドが接続プールを使 用できなくなるので注意。

例外:
java.sql.SQLException - 接続の切断に失敗した場合。

printProperties

public static void printProperties()

設定ファイルから読み込んだプロパティを表示します。


println

static void println(java.lang.String s)


Copyright(c) 2001 TSUTSUMI Kikuo. ALL RIGHTS RESERVED.