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
コンストラクタの概要 |
ClusterConnectionPool(java.lang.String driver,
java.lang.String url,
java.lang.String user,
java.lang.String pass)
コンストラクタ。 |
クラス 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()