我正在创建连接管理器类,该类将java.sql.Connection
返回到类的客户。我的目标是始终在池中有2个可用的连接,以便我不会放松建立连接的时间。当我返回可用连接时,我需要使Oracle UCP创建新的可用连接,因此它将始终可用2个连接。
问题是Oracle UCP没有控制它的选项。我已经阅读了UCP文档,但没有找到任何解决方案。
有setMinPoolSize()
方法,但它控制可用 借用连接,而不仅仅是可用的连接。
也有可收获的连接功能,但它收获现有(借用)连接而不是创建新的连接。
注意:我正在使用Oracle 11.2.0.3和最新的ucp.jar
(对于Oracle 11.2.0.3)
没有这样的解决方案。从连接池请求连接时,将从池中签出,或者创建新连接。这是在执行请求的线程上产生的。如果您始终想在池中维护2个连接,而不是在使用中,则只是移动问题:当检查连接并添加available < 2
时,将添加连接。在请求连接的线程上再次产生的成本(从理论上讲,这可以将其卸载到单独的线程/执行程序,但这会使池复杂化)。
连接池旨在通过保持连接可重复使用并因此"扩散成本"来降低建立连接的成本,而不是打算完全消除成本。