openGionopenGion
5.1.1.2

org.opengion.fukurou.db
クラス ConnectionFactory

java.lang.Object
  上位を拡張 org.opengion.fukurou.db.ConnectionFactory

public final class ConnectionFactory
extends java.lang.Object

データベースのConnection オブジェクトを取得する為に使用する,ファクトリクラスです。 Connection.connection() メソッドで,Connectionオブジェクトを取得します。 Connection#close() メソッドで,内部的に ConnectionFactory にオブジェクトを戻す 事によって,Connectionオブジェクトのプーリングを行なっています。 Connection オブジェクトは,プールから貸し出します。 つまり,貸し出し中には,プールには,オブジェクトは残っていません。 その状態で,Connection オブジェクトをclose()しない場合は,オブジェクトが破棄されて, 貸し出し中カウントと実際のオブジェクト数が食い違い,リソースが不足します。 必ず,作成したオブジェクトは,close()メソッドを呼び出して,プールに返して下さい。 システムリソースの USE_DB_APPLICATION_INFO=true の場合、コネクションにアプリケーション 情報を追記するため、ApplicationInfo オブジェクトを使用します。 このオブジェクトは、jsp/common/session-init.jsp にてユーザー情報とアプリケーション 情報を画面アクセスごとに設定します。

機能階層
DB/Shell制御
変更履歴:
4.0.0.0 (2007/10/16) パッケージ移動(hayabusa/db > fukurou/db)
バージョン
4.0
作成者
Kazuhiko Hasegawa
導入されたバージョン:
JDK5.0,

メソッドの概要
static void close(java.sql.Connection conn, java.lang.String dbid)
          Connection オブジェクトをプールに戻します。
static java.sql.Connection connection(java.lang.String dbid, ApplicationInfo appInfo)
          Connection オブジェクトを取得します。
static java.lang.String getDBFullName(java.lang.String dbid)
          接続先のDB名を返します。
static java.lang.String information()
          ConnectionFactory の現在の状況を返します。
static void init(java.lang.String defPoolKey, java.lang.String XmlFileName)
          初期化メソッドです。
static void realClose()
          Connection オブジェクトを実際にすべてクローズします。
static void remove(java.sql.Connection conn, java.lang.String dbid)
          Connection オブジェクトを物理的に削除(クローズ)戻します。
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

メソッドの詳細

init

public static void init(java.lang.String defPoolKey,
                        java.lang.String XmlFileName)
初期化メソッドです。
1)第二引数にXMLファイルをクラスローダ基底からの相対パスで指定した場合は
  そのXMLを利用してDBConfigオブジェクトを作成します。例:ConnectionFactory.init( CONTEXT_NAME, "../DBConfig.xml")
  nullの場合はWEB-INF/DBConfig.xmlを利用します。例:ConnectionFactory.init( CONTEXT_NAME, null)
2)キャッシュ初期ConnectionPoolのキーを設定してキャッシュプールを作ります。
  この値がnullの場合は"DEFAULT"が設定されます。
このクラスを利用する場合は必ず最初にこのメソッドを実行する必要があります。
キャッシュとDBConfigオブジェクトの同期化はされていないので初期化以外での利用は避けて下さい。

パラメータ:
defPoolKey -
XmlFileName -
変更履歴:
4.0.0.0 (2007/11/05) 新規作成

connection

public static java.sql.Connection connection(java.lang.String dbid,
                                             ApplicationInfo appInfo)
Connection オブジェクトを取得します。 遅い初期化を行なう事により,実際に必要となるまでConnection オブジェクトは 作成しません。 最大プール数に達して,なおかつ,すべてのConnectionが貸し出し中の場合,

パラメータ:
dbid - 接続先ID
appInfo - ApplicationInfo
戻り値:
Connection オブジェクト
変更履歴:
2.1.1.3 (2002/11/22) コネクションID が null の場合に DEFAULT から所得するように変更。
3.1.0.0 (2003/03/20) Hashtable を使用している箇所で、非同期でも構わない箇所を、HashMap に置換え。
3.5.6.2 (2004/07/05) 文字列の連結にStringBuilderを使用します。
3.8.7.0 (2006/12/15) アクセスログ取得の為,ApplicationInfo オブジェクトを設定
3.8.8.2 (2007/01/26) USE_DB_APPLICATION_INFO ⇒ pool.useApplicationInfo() 変更
4.0.0.0 (2007/10/10) キャッシュされた、初期ConnectionPool を使用
4.1.0.1 (2008/01/21) 登録時に、大文字に変換する。

close

public static void close(java.sql.Connection conn,
                         java.lang.String dbid)
Connection オブジェクトをプールに戻します。 Connectionオブジェクトは,close()メソッドで,自分自身を ConnectionFactory の プールに戻します。 それ以外の Connection オブジェクトをプールに戻す場合は,このメソッドを使用します。

パラメータ:
conn - Connection
dbid - String
変更履歴:
2.1.1.3 (2002/11/22) コネクションID が null の場合に DEFAULT から所得するように変更。
4.0.0.0 (2007/10/10) キャッシュされた、初期ConnectionPool を使用
4.1.0.1 (2008/01/21) 登録時に、大文字に変換する。

remove

public static void remove(java.sql.Connection conn,
                          java.lang.String dbid)
Connection オブジェクトを物理的に削除(クローズ)戻します。 これは、コネクション等がエラーを起こした場合に、プールに戻すのではなく、 接続を閉じる場合に、使用されます。

パラメータ:
conn - Connection
dbid - String
変更履歴:
2.1.1.3 (2002/11/22) コネクションID が null の場合に DEFAULT から所得するように変更。
4.0.0.0 (2007/10/10) キャッシュされた、初期ConnectionPool を使用
4.1.0.1 (2008/01/21) 登録時に、大文字に変換する。

realClose

public static void realClose()
Connection オブジェクトを実際にすべてクローズします。 コネクションプールの再編成や,管理者による強制クローズに使用します。 クローズに失敗(コネクションが貸し出し中)の場合は,内部的に DB_CLOSE_RETRY_TIME だけ待機して, DB_CLOSE_RETRY_COUNT 回数だけ,試行します。 それでもクローズできない場合は, RuntimeException を throw します。

変更履歴:
4.0.0 (2005/01/31) ロジック見直し。 pool.clear() で、基本的にはすべて削除されます。
4.0.0.0 (2007/10/10) キャッシュされた、初期ConnectionPool を使用

information

public static java.lang.String information()
ConnectionFactory の現在の状況を返します。 これは,コネクションプールの数(最大値,作成済み数など)を確認する為のものです。

戻り値:
現在の状態表示
変更履歴:
4.0.0.0 (2007/10/10) キャッシュされた、初期ConnectionPool を使用

getDBFullName

public static java.lang.String getDBFullName(java.lang.String dbid)
接続先のDB名を返します。

パラメータ:
dbid - String DBID
戻り値:
接続先のDB名+バージョン
変更履歴:
4.3.7.0 (2009/06/01) 新規作成

openGion 5.1.1.2

Webアプリケーションフレームワーク openGion
SourceForge.JPCopyright (c) 2009 The openGion Project.