BoneCP vs WebLogic自带的DB连接池
Posted
技术标签:
【中文标题】BoneCP vs WebLogic自带的DB连接池【英文标题】:BoneCP vs WebLogic's own DB connection pool 【发布时间】:2014-05-18 14:27:36 【问题描述】:我有一个使用 JDBC (ojdbc6.jar) 和 BoneCP 连接到 Oracle DB 的 servlet。我现在需要将我的使用 BoneCP 的代码移植到可以在 WebLogic 中开箱即用的东西上,而不需要在包中包含 BoneCP。
推荐的方法是什么?我可以使用哪些 WebLogic 功能,特别是获得与 BoneCP 等效的功能:
性能 能够记录失败的 SQL 语句 从丢失的数据库连接中自动恢复提前致谢。
【问题讨论】:
【参考方案1】:最好的方法是创建一个指向您的数据库的标准 Oracle JDBC 连接池。根据您的需要(连接数等)对其进行调整。接下来,您需要从代码中重构对以前的连接池实现的任何显式引用。如果您一直在代码中使用 java.sql.* 接口,那么应该几乎没有引用。
一旦所有这些都被重构,您将只有一点代码(或配置文件)告诉您的应用程序从给定的 JNDI 名称中恢复实现 javax.sql.DataSource
的内容并从中获取 Connections
。其余的应该是一样的 - 做任何你需要的事情,然后关闭你的 ResultSets
、Statements
和 Connections
,就像你一直在做的那样。
关于您的问题,您可以在此处找到有关如何监控连接池及其故障恢复策略的大量信息(取决于您的应用服务器版本,我将使用过的版本粘贴在这里):
http://docs.oracle.com/cd/E15051_01/wls/docs103/jdbc_admin/jdbc_datasources.html
关于性能,我没有准确的数据,也没有比较两种实现的基准;为了您的安宁,我会说您在连接池实现中从未发现数据库性能问题 - 这并不意味着它不存在,但这是我寻找它的最后一个地方;)
【讨论】:
谢谢。但是有一个问题——WebLogic 的数据源池背后的实际实现是什么?是 Oracle 通用连接池 (UCP) 吗?因为如果是这样,here 的人明确表示不推荐。 AFAIK,连接池的weblogic实现等,从8.1到10.3都属于weblogic.jdbc.common.internal.*(我没有尝试过更新的版本,对不起)所以我猜它的代码来自BEA时代。我不知道从那以后代码是否已经合并,但 UCP 对我来说似乎是一个不同的产品以上是关于BoneCP vs WebLogic自带的DB连接池的主要内容,如果未能解决你的问题,请参考以下文章