BoneCP (0.7.1 RELEASE) に問題があります。私はBoneCP.getConnection()
、DBが生きていると仮定して、接続オブジェクトを返すことを保証します。
プールの構成方法は次のとおりです
private void setupConnectionPool() throws SQLException
{
// setup the connection pool
String connectUri = "jdbc:mysql://master-mysql:3306/base?zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&useCompression=true";
BoneCPConfig config = new BoneCPConfig();
config.setJdbcUrl(connectUri);
config.setUsername("dbapp");
config.setPassword("meh");
config.setMinConnectionsPerPartition(5);
config.setMaxConnectionsPerPartition(10);
config.setPartitionCount(1);
config.setConnectionTimeoutInMs(5 * 1000);
this.connectionPool = new BoneCP(config); // setup the connection pool
}
次に、コードのどこかでこのように使用します
// I'm using Apache DbUtils
QueryRunner run = new QueryRunner();
Object result = run.query(this.connectionPool.getConnection(), query, handler, start, limit);
このクエリを実行しようとするSQLException
と、状態がスローされます08S01
(通信リンク障害)。
への後続の呼び出しは、this.connectionPool.getConnection()
良好な接続を返します。
しかし、接続が失われた場合に自分で処理する必要がないように、接続プールの全体的なポイントではありませんか?