问题标签 [apache-commons-dbcp]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 在 dbcp 中使用 PreparedStatement 池
有人能解释一下如何使用 dbcp 准备的连接池吗?(如果可能,请提供一些示例代码)。我已经想出了如何打开它——将 KeyedObjectPoolFactory 传递给 PoolableConnectionFactory。但是具体的prepared statements应该如何定义呢?现在我只使用 PoolingDataSource 从池中获取连接。如何使用池中准备好的语句?
java - DBCP(Apache Commons 数据库连接池)是否仍然相关?
JDBC 3.0 规范谈到了连接(和准备好的语句)池。
我们有几个独立的 Java 程序(即我们没有使用应用程序服务器),它们一直在使用 DBCP 来提供连接池。我们应该继续使用 DBCP,还是可以利用 JDBC 提供的池化并摆脱 DBCP?
我们正在使用 MySQL (Connector/J),最终将添加 SQL Server 支持 (jTDS);我们不太可能支持任何其他数据库。
编辑:请参阅下面关于我尝试消除连接池库的评论。似乎 DBCP 仍然相关(请注意,一些评论者推荐 C3P0 而不是 DBCP)。
java - 使用 JDBC 的连接池选项:DBCP 与 C3P0
可用于 Java/JDBC 的最佳连接池库是什么?
我正在考虑 2 个主要候选人(免费/开源):
- Apache DBCP - http://commons.apache.org/dbcp/
- C3P0 - http://sourceforge.net/projects/c3p0
我在博客和其他论坛上阅读了很多关于它们的信息,但无法做出决定。
这两个有什么相关的替代品吗?
java - MySql 连接器/J 中的 autoReconnect 和 autoReconnectForPools 有什么区别?
在 MySql 的连接器 J 驱动程序的配置参考中,对使用autoReconnect属性发出警告购买者。我按照说明增加了服务器的wait_timeout。由于我使用的是 DBCP(在阅读了有关 Stackoverflow 击落 DBCP 的几篇文章后,我正在考虑转移到 c3po),可以使用autoReconnectForPools属性吗?在 DBCP 或任何连接池下启用它实际上会做什么?
java - 从 DUAL 中选择 1:MySQL
在查看我的查询日志时,我看到了一个我没有解释的奇怪模式。
在几乎每个查询之后,我都有“从 DUAL 中选择 1”。
我不知道这是从哪里来的,而且我当然没有明确地进行查询。
日志基本上是这样的:
有没有人遇到过这个问题?
MySQL 版本:5.0.51
驱动程序:使用 JDBC 的 Java 6 应用程序。mysql-connector-java-5.1.6-bin.jar
连接池:commons-dbcp 1.2.2
validationQuery 设置为“从 DUAL 中选择 1”(显然),并且当验证查询为非空时,连接池显然默认 testOnBorrow 和 testOnReturn 为 true。
这给我带来的另一个问题是我是否真的需要验证查询,或者我是否可以通过禁用它或至少降低使用它的频率来提高性能。不幸的是,编写我们的“数据库管理器”的开发人员已不在我们身边,所以我不能要求他为我证明这一点。任何输入将不胜感激。我将通过 API 和谷歌挖掘一段时间,如果我发现任何有价值的东西,我会报告。
编辑:添加了更多信息
EDIT2:为以后发现此问题的任何人添加了正确答案中要求的信息
tomcat - 为什么要使用 Tomcat 的 context.xml 文件来声明 DBCP 资源?
我无法理解为什么要使用 context.xml 文件来声明资源,在我的例子中是数据库连接池。希望我在以下反对使用 context.xml 的论点中得到了我的事实
据我所知,/META-INF/context.xml 中声明的资源仅在上下文中可用,因此没有理由这样做来共享资源。
以这种方式声明连接池资源会创建对容器类加载器的依赖,因此如果我这样做并且例如希望更改我的数据库驱动程序,我必须重新启动容器,而不仅仅是我的上下文。
我还创建了对 JNDI 等容器事物的依赖,这使得独立测试变得更加棘手。
最后,我必须跳过构建时的障碍,例如在测试资源和生产资源之间切换资源。
这些问题都不是不可克服的,但是在纸面上创建一个连接池并将其挂接到我的上下文范围内似乎要简单得多。
我想知道在什么情况下 context.xml 文件是正确的答案?
memory-management - commons dbcp(和其他连接池)如何管理打开的语句和结果集?
具体来说,当我将连接返回到池时,dbcp(和其他连接池)是否会为我关闭语句和结果集?
还是我应该自己关闭这些?
java - 如何缩小数据库连接池?
我在我的 tomcat 容器中使用带有 JNDI 的 Apache DBCP 来汇集到 mysql 数据库的连接。一切正常,但我看到的一个问题是,一旦 pconnection 被汇集,它就永远不会被释放。因此,在负载尖峰连接之后,它们将永远处于休眠状态。他们是通过 context.xml 参数缩小池的方法吗?这是我的配置:
java - 如何在 Tomcat 中创建不使用池的数据源
我使用 JNDI 上下文在 Tomcat 的 context.xml 文件中为 JDBC 驱动程序创建数据源,如下所示,
默认情况下,Tomcat 将使用 DBCP 数据源工厂并创建池化数据源。我们使用的特定数据库和驱动程序已经支持较低级别的池化,而额外的池化实际上会损害性能。有没有像这样使用 JNDI 资源创建基本数据源(没有池),这样我就可以在不同的数据库之间切换,而配置更改最少?
我知道我可以编写自己的数据源工厂或使用其他驱动程序的数据源工厂来实现这一点,但我正在寻找一个更简单的解决方案。