我对 BoneCP (0.7.1 RELEASE) 有疑问。我虽然BoneCP.getConnection()
确保它会返回 Connection 对象假设 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()
返回良好的连接。
但这不是连接池的一个完整点,这样我就不必自己处理丢失连接的情况了吗?