首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当将BreakAfterAcquireFailure设置为true时,DataSource的连接没有重新连接

当将BreakAfterAcquireFailure设置为true时,DataSource的连接没有重新连接
EN

Stack Overflow用户
提问于 2013-12-06 06:32:26
回答 1查看 1.5K关注 0票数 0

我已经将BreakAfterAcquireFailure设置为true,MaxIdleTime和MaxConnectionAge的值为10 (非常小).Like如下:

代码语言:javascript
运行
复制
ComboPooledDataSource ds = new ComboPooledDataSource(db);
ds.setAcquireRetryAttempts(3);
ds.setBreakAfterAcquireFailure(true);
ds.setMaxIdleTime(10);
ds.setMaxConnectionAge(10);
ds.setMaxPoolSize(2);
ds.setMinPoolSize(1);
ds.setTestConnectionOnCheckin(false);
ds.setIdleConnectionTestPeriod(10);
ds.setPreferredTestQuery("select 1");

为什么ComboPooledDataSource.getConnection()总是在重新启动mysql很长时间之后抛出异常。

有谁能帮帮我呢?非常感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-06 08:17:14

breakAfterAcquireFailure 手段确切地说,c3p0不会尝试从dbms中断中恢复。如果设置了breakAfterAcquireFailure,如果发现无法获得新的连接,则DataSource只会标记自己已断开,并且再也不会尝试。如果您希望您的DataSource从外部恢复,则保留该参数的默认值false

对于maxIdleTimemaxConnectionAge,您不需要这么小的值。那太可怕了。如果您依赖于空闲连接测试,最好也将testConnectionOnCheckin设置为true。10秒可能比idleConnectionTestPeriod所需要的更有侵略性。考虑到你的泳池大小,我想你只是在测试/玩这个。(对于大多数用途来说,2的maxPoolSize太小了。)

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20417533

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档