com.lavans.util.jdbc.cluster
クラス ClusterConnectionPool

java.lang.Object
  上位を拡張 com.lavans.util.jdbc.ConnectionPool
      上位を拡張 com.lavans.util.jdbc.cluster.ClusterConnectionPool

public class ClusterConnectionPool
extends ConnectionPool


フィールドの概要
 
クラス com.lavans.util.jdbc.ConnectionPool から継承されたフィールド
logger, MSG_ERR_TOOMANYCONNECTIONS
 
コンストラクタの概要
ClusterConnectionPool(java.lang.String driver, java.lang.String url, java.lang.String user, java.lang.String pass)
          コンストラクタ。
 
メソッドの概要
protected  BindConnection createConnection()
          DBへのコネクション作成。
 java.sql.Connection getAnotherConnection(ClusterConnection target)
          別の接続先を取得する。
 BindConnection getConnection()
          コネクションの取得。
 java.util.List getUrlList()
           
 void setUrlList(java.util.List list)
           
 
クラス com.lavans.util.jdbc.ConnectionPool から継承されたメソッド
checkConnection, getDriver, getLogger, getMax_connections, getPass, getPoolList, getUseList, getUser, init, isLogging, isStatistics, releaseConnection, setForceCheck, setInitConnections, setLogger, setLogging, setMaxConnections, setStatistics, setValidSql
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

ClusterConnectionPool

public ClusterConnectionPool(java.lang.String driver,
                             java.lang.String url,
                             java.lang.String user,
                             java.lang.String pass)
コンストラクタ。

メソッドの詳細

getUrlList

public java.util.List getUrlList()
戻り値:

setUrlList

public void setUrlList(java.util.List list)
パラメータ:
list -

createConnection

protected BindConnection createConnection()
                                   throws java.sql.SQLException
クラス ConnectionPool の記述:
DBへのコネクション作成。 設定ファイルが間違っていてDriverManager#getConnection()の戻りが遅いときに、 何度もcreateConnectionするのを防ぐためsynchronizedとする。 ただし、DoSアタックによるスタックオーバーフローは避けられないので 間違った設定ファイルのまま運用すべきでない。

オーバーライド:
クラス ConnectionPool 内の createConnection
例外:
java.sql.SQLException

getAnotherConnection

public java.sql.Connection getAnotherConnection(ClusterConnection target)
                                         throws java.sql.SQLException
別の接続先を取得する。 このメソッドが呼ばれるのはClusterConnectionが接続している先のDBに 障害があったとき。したがって、エラーが発生していないurlの中から 有効なurlを探索し、Connectionを生成して返してやる。 BindやLogginはClusterConnectionの上にラップされているので、 ここでは意識する必要はない。

戻り値:
例外:
java.sql.SQLException

getConnection

public BindConnection getConnection()
                             throws java.sql.SQLException
コネクションの取得。 コネクション管理はスーパークラスであるConnectionPoolで行うが、 クラスタコネクションの場合だけは初期化処理(過去の更新履歴を削除)する。 初期化の呼び出しを行う適切な場所が思いつかなかったので、 ここでrollback()することにした。setAutoCommit(false)で 使われるときは別に呼ばなくても構わないのだが、setAutoCommit(true)で 使われるときにClusterConnection#set○○系の処理がキューに溜まっていってしまうので、 コネクション取得時にmethodListがクリアされるようにした。

オーバーライド:
クラス ConnectionPool 内の getConnection
例外:
java.sql.SQLException
関連項目:
ConnectionPool.getConnection()