gpt4 book ai didi

java - C3P0 的多个数据源

转载 作者:行者123 更新时间:2023-11-30 11:12:38 25 4
gpt4 key购买 nike

我正在开发一个工具,它接收不同的连接参数来测试不同数据库中的值(jNRPE 中的 Nagios 插件,它保持与不同数据库的开放连接)。因为配置是动态的(可能有更多的数据库或者它们可以被删除)我不能有配置文件。

我想知道我是否应该为每个数据库配备一个 C3P0 实例,或者我是否可以使用相同的实例并在每次请求连接时更改 URL?

代码在github: https://github.com/angoca/db2-jnrpe/blob/master/src/main/java/com/github/angoca/db2_jnrpe/database/pools/c3p0/DBCP_c3p0.java

如果没有,我如何动态地为多个数据库获取多个池?

最佳答案

每个 JDBC url 都需要一个不同的 c3p0 数据源。连接池必须包含同类连接:从客户端的角度来看,所有 checkout 的连接必须是等效的。如果来自多个数据库的连接包含在同一个池中,客户端将无法指定或知道它们正在与哪个数据库通信。

(如果你正在复制,比方说,一个只读数据库,并且你真的希望来自多个源的连接存在于一个池中,因为从客户端的角度来看它们保证是等价的,你可以通过定义一个自定义的、未池化的数据源,循环或随机选择一个复制者,然后通过 c3p0 的数据源工厂池化数据源。)

动态创建和配置 c3p0 数据源非常容易。参见示例代码 here .

如果您将动态配置捕获为 c3p0 属性名称到值的映射,则还有一个 alternative, more concise way获取具有该配置的数据源。

关于java - C3P0 的多个数据源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26785842/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com