我正在创建连接管理器类,它会将java.sql.Connection
返回给类的客户。
我的目标是在池中始终有2个可用连接,这样我就不会浪费时间来创建连接。当我返回可用连接时,我需要让Oracle UCP创建新的可用连接,因此它总是有2个连接可用。
问题是Oracle UCP没有控制它的选项。我已阅读UCP documentation,但未找到任何解决方案。
有setMinPoolSize()
方法,但它控制可用+借用连接,而不仅仅是可用连接。
此外还有一个可收获的连接功能,但它可以收集现有(借用)连接,而不是创建新连接。
注意:
我正在使用Oracle 11.2.0.3和最新的ucp.jar
(对于Oracle 11.2.0.3)
答案 0 :(得分:0)
没有这样的解决方案。从连接池请求连接时,将从池中检出连接,或者创建新连接。执行请求的线程会产生此成本。如果您总是希望在池中维护2个以上的连接而不是使用,则只需移动问题:当检出连接并available < 2
时,将添加连接。在请求连接的线程上再次产生的成本(理论上是的,可以将其卸载到单独的线程/执行器,但这会使池复杂化。)
连接池旨在通过保持连接可用于重用并因此“分摊成本”来降低创建连接的成本,但并不是要完全取消成本。