org.apache.commons.dbcp.jdbc2pool
クラス Jdbc2PoolDataSource

java.lang.Object
  拡張org.apache.commons.dbcp.jdbc2pool.Jdbc2PoolDataSource
すべての実装インタフェース:
DataSource, ObjectFactory, Referenceable, Serializable

public class Jdbc2PoolDataSource
extends Object
implements DataSource, Referenceable, Serializable, ObjectFactory

J2EE環境でのデプロイに適切なプーリングを行う DataSource です。 さまざまな設定オプションを持ちます。 複数のユーザがそれぞれの Connection の最大数等のパラメータの共通セットを持つことができます。 このプールはデプロイする環境がプロパティのマッピングによる初期化をサポートする場合、ユーザ毎の個々のプールを持つ機能をサポートします。 従って、例えば管理者、または書き込みアクセスのプールに対して一定の Connection を保証し、読み込み専用の接続の数とは切り離して管理することができます。

J2EE コンテナは普通 DataSource を初期化するためのいくつかの方法を提供し、 初期化の為の属性は bean のゲッタ/セッタにて参照され、JNDI を経てデプロイされます。 これはプールされた論理的なデータベースへの接続の供給元としてとしてアプリケーションから利用することができます。 プールは物理的な接続の供給元を必要とします。 この供給元となる ConnectionPoolDataSource は JNDI を介してルックアップを行う setDataSourceName(String) にて指定することができます。

普通、 Jdbc2PoolDataSource は JNDI 環境で使用されますが、 DriverAdapterCPDS は他の bean と同じようにインスタンス化、初期化されます。 この場合、 ConnectionPoolDataSource も同じような方法でインスタンス化されます。 この(コネクションの)供給元は setConnectionPoolDataSource(ConnectionPoolDataSource) メソッドを使用して直接このプールにアタッチされます。

この DataSource が JNDI を経由して複数の要求を受けた場合、ルックアップ毎に状態を保持します。 また、この複数のインスタンスはそれぞれ(コネクションの)供給元に異なる ConnectionPoolDataSource を使用してデプロイされます。

dbcp.cpdsadapter パッケージには Jdbc2PoolDataSource が使用することのできる ConnectionPoolDataSource の実装は持たないが Driver は提供されている JDBC ドライバ実装のためのアダプタ DriverAdapterCPDS が含まれます。

パッケージドキュメント には catalina と JNDI を使用した場合と JNDI を使用しない場合の使用例が含まれています。

バージョン:
$Id: Jdbc2PoolDataSource.java,v 1.1.1.1 2004/02/13 10:02:03 hioki Exp $
作成者:
John D. McNally
関連項目:
直列化された形式
翻訳者:
日置 聡

コンストラクタの概要
Jdbc2PoolDataSource()
          Serialization のための引数のないデフォルトコンストラクタ。
 
メソッドの概要
 Connection getConnection()
          データベースとの接続の確立を試みます。
 Connection getConnection(String username, String password)
          データベースとの接続の確立を試みます。
 ConnectionPoolDataSource getConnectionPoolDataSource()
          connectionPoolDataSource の値を取得します。
 String getDataSourceName()
          このプールの内部の ConnectionPoolDataSource の名前を取得します。
 int getDefaultMaxActive()
          このプールから1度に割り当てることのできるアクティブなコネクションの最大数です。
 int getDefaultMaxIdle()
          このプール内で開放されずにアイドル状態でいられるアクティブなコネクションの最大数です。
 int getDefaultMaxWait()
          利用可能なコネクションがない場合に例外を投げるまでプールが待機するミリセカンドの最大値です。
 String getDescription()
          記述情報(Description)の値を取得します。
 String getJndiEnvironment(String key)
          JNDI InitialContext のインスタンス化の際に使用される jndiEnvironment の値を取得します。
 int getLoginTimeout()
          loginTimeout の値を取得します。
 PrintWriter getLogWriter()
          logWriter の値を取得します。
 int getMinEvictableIdleTimeMillis()
          アイドル状態のオブジェクトがプール内に居られる最短時間を返します。
 int getNumTestsPerEvictionRun()
          アイドル状態のオブジェクトを排除するスレッドが1度の動作でチェックの対象とするオブジェクトの数を返します。
 Object getObjectInstance(Object refObj, Name name, Context context, Hashtable env)
          このクラスのインスタンスを生成するための ObjectFactory の実装です。
 Boolean getPerUserDefaultAutoCommit(String key)
          ユーザ毎のオートコミットのデフォルトの設定値を取得します。
 Boolean getPerUserDefaultReadOnly(String username)
          ユーザ毎の読み込み専用アクセスのデフォルトの設定値(defaultReadOnly)を取得します。
 Integer getPerUserMaxActive(String username)
          ユーザ毎のこのプールから1度に割り当てることのできるアクティブなステートメントの最大数です。
 Integer getPerUserMaxIdle(String username)
          ユーザ毎の余分なものを開放せずにプール内にアイドル状態で保持できるステートメントの最大数です。
 Integer getPerUserMaxWait(String username)
          ユーザ毎の利用可能なコネクションがない場合に例外を投げるまでプールが待機するミリセカンドの最大値です。
 Reference getReference()
          JNDI 内にバインディングするためにオブジェクトを準備する Referenceable の実装です。
 boolean getTestOnBorrow()
          この値が true の場合、 ObjectPool.borrowObject() にてプールからオブジェクトが取り出される前にチェックが行われます。
 boolean getTestOnReturn()
          この値が true の場合、 ObjectPool.returnObject(java.lang.Object) にてプールへオブジェクトが返された後にチェックが行われます。
 boolean getTestWhileIdle()
          この値が true の場合、アイドル状態のオブジェクトを排除するスレッドにて チェックが行われます。
 int getTimeBetweenEvictionRunsMillis()
          アイドル状態のオブジェクトを排除するスレッドが次の動作までスリープする時間を示すミリセカンドの値を返します。
 String getValidationQuery()
          このプールにコネクションが返された後にコネクションのチェックに使用される SQL クエリです。
 boolean isDefaultAutoCommit()
          このプールから取り出されるコネクションの状態を定義する defaultAutoCommit の値を取得します。
 boolean isDefaultReadOnly()
          このプールから取り出されるコネクションの状態を定義する defaultReadOnly の値を取得します。
 void setConnectionPoolDataSource(ConnectionPoolDataSource v)
          バックエンドの ConnectionPoolDataSource を設定します。
 void setDataSourceName(String v)
          このプールの内部の ConnectionPoolDataSource の名前を設定します。
 void setDefaultAutoCommit(boolean v)
          このプールから取り出されるコネクションの状態を定義する defaultAutoCommit の値を設定します。
 void setDefaultMaxActive(int maxActive)
          このプールから1度に割り当てることのできるアクティブなコネクションの最大数です。
 void setDefaultMaxIdle(int defaultMaxIdle)
          このプール内で開放されずにアイドル状態でいられるアクティブなコネクションの最大数です。
 void setDefaultMaxWait(int defaultMaxWait)
          利用可能なコネクションがない場合に例外を投げるまでプールが待機するミリセカンドの最大値です。
 void setDefaultReadOnly(boolean v)
          このプールから取り出されるコネクションの状態を定義する defaultReadOnly の値を設定します。
 void setDescription(String v)
          記述情報(Description)の値を設定します。
 void setJndiEnvironment(String key, String value)
          JNDI InitialContext のインスタンス化の際に使用される jndiEnvironment の値を設定します。
 void setLoginTimeout(int v)
          loginTimeout の値を設定します。
 void setLogWriter(PrintWriter v)
          logWriter の値を設定します。
 void setMinEvictableIdleTimeMillis(int minEvictableIdleTimeMillis)
          アイドル状態のオブジェクトがプール内に居られる最短時間を設定します。
 void setNumTestsPerEvictionRun(int numTestsPerEvictionRun)
          アイドル状態のオブジェクトを排除するスレッドが1度の動作でチェックの対象とするオブジェクトの数を設定します。
 void setPerUserDefaultAutoCommit(String username, Boolean value)
          ユーザ毎のオートコミットのデフォルトの設定値を設定します。
 void setPerUserDefaultReadOnly(String username, Boolean value)
          ユーザ毎の読み込み専用アクセスのデフォルトの設定値(defaultReadOnly)を設定します。
 void setPerUserMaxActive(String username, Integer value)
          ユーザ毎のこのプールから1度に割り当てることのできるアクティブなステートメントの最大数です。
 void setPerUserMaxIdle(String username, Integer value)
          ユーザ毎の余分なものを開放せずにプール内にアイドル状態で保持できるステートメントの最大数です。
 void setPerUserMaxWait(String username, Integer value)
          ユーザ毎の利用可能なコネクションがない場合に例外を投げるまでプールが待機するミリセカンドの最大値です。
 void setTestOnBorrow(boolean testOnBorrow)
          この値が true の場合、 ObjectPool.borrowObject() にてプールからオブジェクトが取り出される前にチェックが行われます。
 void setTestOnReturn(boolean testOnReturn)
          この値が true の場合、 ObjectPool.returnObject(java.lang.Object) にてプールへオブジェクトが返された後にチェックが行われます。
 void setTestWhileIdle(boolean testWhileIdle)
          この値が true の場合、アイドル状態のオブジェクトを排除するスレッドにて チェックが行われます。
 void setTimeBetweenEvictionRunsMillis(int timeBetweenEvictionRunsMillis)
          アイドル状態のオブジェクトを排除するスレッドが次の動作までスリープする時間を示すミリセカンドの値を設定します。
 void setValidationQuery(String validationQuery)
          このプールにコネクションが返された後にコネクションのチェックに使用される SQL クエリです。
 
クラス java.lang.Object から継承したメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

Jdbc2PoolDataSource

public Jdbc2PoolDataSource()
Serialization のための引数のないデフォルトコンストラクタ。

メソッドの詳細

getConnection

public Connection getConnection()
                         throws SQLException
データベースとの接続の確立を試みます。

定義:
インタフェース DataSource 内の getConnection
例外:
SQLException

getConnection

public Connection getConnection(String username,
                                String password)
                         throws SQLException
データベースとの接続の確立を試みます。

定義:
インタフェース DataSource 内の getConnection
例外:
SQLException

getConnectionPoolDataSource

public ConnectionPoolDataSource getConnectionPoolDataSource()
connectionPoolDataSource の値を取得します。 内部のデータソースが JNDI を介してアクセスされている場合には null を返します。

戻り値:
connectionPoolDataSource の値

getDataSourceName

public String getDataSourceName()
このプールの内部の ConnectionPoolDataSource の名前を取得します。 この名前は JNDI サービスプロバイダからデータソースをルックアップする際に使用されます。

戻り値:
dataSourceName の値

getDefaultMaxActive

public int getDefaultMaxActive()
このプールから1度に割り当てることのできるアクティブなコネクションの最大数です。 0が設定された場合には制限を行いません。 この値は perUserMaxConnections が指定されていない全てのユーザ名に対して適用されます。 デフォルトの値は0です。


getDefaultMaxIdle

public int getDefaultMaxIdle()
このプール内で開放されずにアイドル状態でいられるアクティブなコネクションの最大数です。 0が設定された場合には制限を行いません。 この値は perUserMaxIdle が指定されていない全てのユーザ名に対して適用されます。 デフォルトの値は0です。


getDefaultMaxWait

public int getDefaultMaxWait()
利用可能なコネクションがない場合に例外を投げるまでプールが待機するミリセカンドの最大値です。 -1が設定された場合には期限を持たず待機します。 利用可能なコネクションがない場合に直ちに失敗としたい場合には0を設定します。 この値は perUserMaxWait が指定されていない全てのユーザ名に対して適用されます。 デフォルトの値は-1です。


getDescription

public String getDescription()
記述情報(Description)の値を取得します。 このプロパティはデータソースをデプロイする GUI 等のツールで使用するために JDBC にて定義されています。 このプロパティは内部の処理には何の影響も与えません。

戻り値:
記述情報(Description)の値

getJndiEnvironment

public String getJndiEnvironment(String key)
JNDI InitialContext のインスタンス化の際に使用される jndiEnvironment の値を取得します。 この InitialContext はバックエンドの ConnectionPoolDataSource の場所を確認するために使用されます。

戻り値:
jndiEnvironment の値

getLoginTimeout

public int getLoginTimeout()
loginTimeout の値を取得します。

定義:
インタフェース DataSource 内の getLoginTimeout
戻り値:
loginTimeout の値

getLogWriter

public PrintWriter getLogWriter()
logWriter の値を取得します。

定義:
インタフェース DataSource 内の getLogWriter
戻り値:
logWriter の値

getMinEvictableIdleTimeMillis

public int getMinEvictableIdleTimeMillis()
アイドル状態のオブジェクトがプール内に居られる最短時間を返します。 この時間を過ぎるとアイドル状態のオブジェクトを排除するスレッドのチェック対象となります。

関連項目:
setMinEvictableIdleTimeMillis(int), setTimeBetweenEvictionRunsMillis(int)

getNumTestsPerEvictionRun

public int getNumTestsPerEvictionRun()
アイドル状態のオブジェクトを排除するスレッドが1度の動作でチェックの対象とするオブジェクトの数を返します。

関連項目:
setNumTestsPerEvictionRun(int), setTimeBetweenEvictionRunsMillis(int)

getObjectInstance

public Object getObjectInstance(Object refObj,
                                Name name,
                                Context context,
                                Hashtable env)
                         throws Exception
このクラスのインスタンスを生成するための ObjectFactory の実装です。

定義:
インタフェース ObjectFactory 内の getObjectInstance
例外:
Exception

getPerUserDefaultAutoCommit

public Boolean getPerUserDefaultAutoCommit(String key)
ユーザ毎のオートコミットのデフォルトの設定値を取得します。


getPerUserDefaultReadOnly

public Boolean getPerUserDefaultReadOnly(String username)
ユーザ毎の読み込み専用アクセスのデフォルトの設定値(defaultReadOnly)を取得します。


getPerUserMaxActive

public Integer getPerUserMaxActive(String username)
ユーザ毎のこのプールから1度に割り当てることのできるアクティブなステートメントの最大数です。 0が設定された場合には制限を行いません。


getPerUserMaxIdle

public Integer getPerUserMaxIdle(String username)
ユーザ毎の余分なものを開放せずにプール内にアイドル状態で保持できるステートメントの最大数です。 0が設定された場合には制限を行いません。


getPerUserMaxWait

public Integer getPerUserMaxWait(String username)
ユーザ毎の利用可能なコネクションがない場合に例外を投げるまでプールが待機するミリセカンドの最大値です。 -1が設定された場合には期限を持たず待機します。 利用可能なコネクションがない場合に直ちに失敗としたい場合には0を設定します。


getReference

public Reference getReference()
                       throws NamingException
JNDI 内にバインディングするためにオブジェクトを準備する Referenceable の実装です。

定義:
インタフェース Referenceable 内の getReference
例外:
NamingException

getTestOnBorrow

public boolean getTestOnBorrow()
この値が true の場合、 ObjectPool.borrowObject() にてプールからオブジェクトが取り出される前にチェックが行われます。 チェックの結果、オブジェクトの状態が不適切と判断された場合このオブジェクトはプールから削除され、 他のオブジェクトを取り出すことを試みます。

関連項目:
setTestOnBorrow(boolean)

getTestOnReturn

public boolean getTestOnReturn()
この値が true の場合、 ObjectPool.returnObject(java.lang.Object) にてプールへオブジェクトが返された後にチェックが行われます。

関連項目:
setTestOnReturn(boolean)

getTestWhileIdle

public boolean getTestWhileIdle()
この値が true の場合、アイドル状態のオブジェクトを排除するスレッドにて チェックが行われます。 チェックの結果、オブジェクトの状態が不適切と判断された場合にはプールから削除されます。

関連項目:
setTestWhileIdle(boolean), setTimeBetweenEvictionRunsMillis(int)

getTimeBetweenEvictionRunsMillis

public int getTimeBetweenEvictionRunsMillis()
アイドル状態のオブジェクトを排除するスレッドが次の動作までスリープする時間を示すミリセカンドの値を返します。 マイナスの値が設定されている場合、アイドル状態のオブジェクトを排除するスレッドは動作しません。

関連項目:
setTimeBetweenEvictionRunsMillis(int)

getValidationQuery

public String getValidationQuery()
このプールにコネクションが返された後にコネクションのチェックに使用される SQL クエリです。 指定する場合にはこのクエリは少なくとも1つの列を返す SQL SELECT ステートメントでなくてはなりません


isDefaultAutoCommit

public boolean isDefaultAutoCommit()
このプールから取り出されるコネクションの状態を定義する defaultAutoCommit の値を取得します。 この設定は Connection の Connection.setAutoCommit(boolean) を使用して変更することができます。 デフォルトの値は true です。

戻り値:
defaultAutoCommit の値

isDefaultReadOnly

public boolean isDefaultReadOnly()
このプールから取り出されるコネクションの状態を定義する defaultReadOnly の値を取得します。 この設定は Connection の Connection.setReadOnly(boolean) を使用して変更することができます。 デフォルトの値は false です。

戻り値:
defaultReadOnly の値

setConnectionPoolDataSource

public void setConnectionPoolDataSource(ConnectionPoolDataSource v)
バックエンドの ConnectionPoolDataSource を設定します。 データソースのアクセスに JNDI を使用する場合には、このプロパティは設定するべきではありません。

パラメータ:
v - connectionPoolDataSource に割り当てる値

setDataSourceName

public void setDataSourceName(String v)
このプールの内部の ConnectionPoolDataSource の名前を設定します。 この名前は JNDI サービスプロバイダからデータソースをルックアップする際に使用されます。

パラメータ:
v - dataSourceName に割り当てる値

setDefaultAutoCommit

public void setDefaultAutoCommit(boolean v)
このプールから取り出されるコネクションの状態を定義する defaultAutoCommit の値を設定します。 この設定は Connection の Connection.setAutoCommit(boolean) を使用して変更することができます。 デフォルトの値は true です。

パラメータ:
v - defaultAutoCommit に割り当てる値

setDefaultMaxActive

public void setDefaultMaxActive(int maxActive)
このプールから1度に割り当てることのできるアクティブなコネクションの最大数です。 0が設定された場合には制限を行いません。 この値は perUserMaxConnections が指定されていない全てのユーザ名に対して適用されます。 デフォルトの値は0です。


setDefaultMaxIdle

public void setDefaultMaxIdle(int defaultMaxIdle)
このプール内で開放されずにアイドル状態でいられるアクティブなコネクションの最大数です。 0が設定された場合には制限を行いません。 この値は perUserMaxIdle が指定されていない全てのユーザ名に対して適用されます。 デフォルトの値は0です。


setDefaultMaxWait

public void setDefaultMaxWait(int defaultMaxWait)
利用可能なコネクションがない場合に例外を投げるまでプールが待機するミリセカンドの最大値です。 -1が設定された場合には期限を持たず待機します。 利用可能なコネクションがない場合に直ちに失敗としたい場合には0を設定します。 この値は perUserMaxWait が指定されていない全てのユーザ名に対して適用されます。 デフォルトの値は-1です。


setDefaultReadOnly

public void setDefaultReadOnly(boolean v)
このプールから取り出されるコネクションの状態を定義する defaultReadOnly の値を設定します。 この設定は Connection の Connection.setReadOnly(boolean) を使用して変更することができます。 デフォルトの値は false です。

パラメータ:
v - defaultReadOnly に割り当てる値

setDescription

public void setDescription(String v)
記述情報(Description)の値を設定します。 このプロパティはデータソースをデプロイする GUI 等のツールで使用するために JDBC にて定義されています。 このプロパティは内部の処理には何の影響も与えません。

パラメータ:
v - 記述情報(Description)に割り当てる値

setJndiEnvironment

public void setJndiEnvironment(String key,
                               String value)
JNDI InitialContext のインスタンス化の際に使用される jndiEnvironment の値を設定します。 この InitialContext はバックエンドの ConnectionPoolDataSource の場所を確認するために使用されます。

パラメータ:
value - jndiEnvironment に割り当てる値

setLoginTimeout

public void setLoginTimeout(int v)
loginTimeout の値を設定します。

定義:
インタフェース DataSource 内の setLoginTimeout
パラメータ:
v - loginTimeout に割り当てる値

setLogWriter

public void setLogWriter(PrintWriter v)
logWriter の値を設定します。

定義:
インタフェース DataSource 内の setLogWriter
パラメータ:
v - logWriter に割り当てる値

setMinEvictableIdleTimeMillis

public void setMinEvictableIdleTimeMillis(int minEvictableIdleTimeMillis)
アイドル状態のオブジェクトがプール内に居られる最短時間を設定します。 この時間を過ぎるとアイドル状態のオブジェクトを排除するスレッドのチェック対象となります。 マイナスの値が設定された場合、アイドル状態で居た時間ではオブジェクトはプールから排除されません。

関連項目:
getMinEvictableIdleTimeMillis(), setTimeBetweenEvictionRunsMillis(int)

setNumTestsPerEvictionRun

public void setNumTestsPerEvictionRun(int numTestsPerEvictionRun)
アイドル状態のオブジェクトを排除するスレッドが1度の動作でチェックの対象とするオブジェクトの数を設定します。

マイナスの値が設定された場合、ceil({*link #numIdle})/abs({*link #getNumTestsPerEvictionRun}) の数のテストが実施されます。 例えば値が -n の場合にはアイドル状態のステートメントのうち 1/n が1度の動作でテストされます。

関連項目:
getNumTestsPerEvictionRun(), setTimeBetweenEvictionRunsMillis(int)

setPerUserDefaultAutoCommit

public void setPerUserDefaultAutoCommit(String username,
                                        Boolean value)
ユーザ毎のオートコミットのデフォルトの設定値を設定します。


setPerUserDefaultReadOnly

public void setPerUserDefaultReadOnly(String username,
                                      Boolean value)
ユーザ毎の読み込み専用アクセスのデフォルトの設定値(defaultReadOnly)を設定します。


setPerUserMaxActive

public void setPerUserMaxActive(String username,
                                Integer value)
ユーザ毎のこのプールから1度に割り当てることのできるアクティブなステートメントの最大数です。 0が設定された場合には制限を行いません。


setPerUserMaxIdle

public void setPerUserMaxIdle(String username,
                              Integer value)
ユーザ毎の余分なものを開放せずにプール内にアイドル状態で保持できるステートメントの最大数です。 0が設定された場合には制限を行いません。


setPerUserMaxWait

public void setPerUserMaxWait(String username,
                              Integer value)
ユーザ毎の利用可能なコネクションがない場合に例外を投げるまでプールが待機するミリセカンドの最大値です。 -1が設定された場合には期限を持たず待機します。 利用可能なコネクションがない場合に直ちに失敗としたい場合には0を設定します。


setTestOnBorrow

public void setTestOnBorrow(boolean testOnBorrow)
この値が true の場合、 ObjectPool.borrowObject() にてプールからオブジェクトが取り出される前にチェックが行われます。 チェックの結果、オブジェクトの状態が不適切と判断された場合このオブジェクトはプールから削除され、 他のオブジェクトを取り出すことを試みます。

関連項目:
getTestOnBorrow()

setTestOnReturn

public void setTestOnReturn(boolean testOnReturn)
この値が true の場合、 ObjectPool.returnObject(java.lang.Object) にてプールへオブジェクトが返された後にチェックが行われます。

関連項目:
getTestOnReturn()

setTestWhileIdle

public void setTestWhileIdle(boolean testWhileIdle)
この値が true の場合、アイドル状態のオブジェクトを排除するスレッドにて チェックが行われます。 チェックの結果、オブジェクトの状態が不適切と判断された場合にはプールから削除されます。

関連項目:
getTestWhileIdle(), setTimeBetweenEvictionRunsMillis(int)

setTimeBetweenEvictionRunsMillis

public void setTimeBetweenEvictionRunsMillis(int timeBetweenEvictionRunsMillis)
アイドル状態のオブジェクトを排除するスレッドが次の動作までスリープする時間を示すミリセカンドの値を設定します。 マイナスの値が設定されている場合、アイドル状態のオブジェクトを排除するスレッドは動作しません。

関連項目:
getTimeBetweenEvictionRunsMillis()

setValidationQuery

public void setValidationQuery(String validationQuery)
このプールにコネクションが返された後にコネクションのチェックに使用される SQL クエリです。 指定する場合にはこのクエリは少なくとも1つの列を返す SQL SELECT ステートメントでなくてはなりません。 デフォルトの動作では、プールからコネクションが引き出される際にコネクションに対するテストが実施されます。



このドキュメントは、Ja-Jakartaにより訳されました。 コメントがある場合は report@jajakarta.orgまでお願いします。
Translated into Japanese by jajakarta.org. The original page is here.
Copyright (c) 2002-2003 - Apache Software Foundation