PostgreSQL JDBC4的连接池化

13

最近我从这里下载了PostgreSQL的JDBC驱动程序。 由于我正在使用Java 1.7 JVM,而它写道:

如果您正在使用1.6或1.7 JVM,则应使用JDBC4版本。

我下载了JDBC4。问题是它里面没有PoolingDataSource's。 如果您获取JDBC3,则可以像这里所示一样使用org.postgresql.jdbc3.Jdbc3PoolingDataSource或其他内容。

JDBC4中是否有任何池化DataSource我不知道,或者我应该使用什么替代品?我在JDBC4中找到的唯一一件事是PGPoolingDataSource,但我不确定是否应该使用它,因为根据他们的Java文档消息:

请勿使用此功能,如果您的服务器/中间件供应商提供了一个连接池实现,该实现与PostgreSQL ConnectionPoolDataSource实现进行了接口!
1个回答

18
使用org.postgresql.ds.PGPoolingDataSource
以下是一个示例:http://jdbc.postgresql.org/documentation/head/ds-ds.html
我使用JDBC4驱动程序检查了这个示例,并且它运行良好。

然而,根据此链接提供的文档,他们不建议使用postgreSQL连接池数据源,因为它有一些限制:

此处提供的连接池数据源实现不是最全面的。除其他事项外,直到关闭池本身之前,连接不会被关闭;没有缩小池的方法。此外,请求为默认配置用户以外的用户的连接不会被汇集。它的错误处理有时无法从池中删除已损坏的连接。一般来说,不建议使用PostgreSQL提供的连接池。检查您的应用程序服务器或查看优秀的Jakarta Commons DBCP项目。

他们建议使用DBCP连接池:http://commons.apache.org/proper/commons-dbcp/ 检查它,它要好得多 - 只需下载库文件,将它们放置在类路径中并导入到项目中,上面链接的文档包含如何在代码中使用它的示例。

大多数(所有?)应用服务器都实现了自己的连接池,如果您正在使用应用服务器,则这是最佳选项。
例如Tomcat 7拥有其自己的连接池实现,甚至比DBCP更好,请查看文档:http://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接