【问题标题】:Connection Pooling with PostgreSQL JDBC使用 PostgreSQL JDBC 的连接池
【发布时间】:2013-10-12 19:05:52
【问题描述】:

最近我从here 下载了PostgreSQL 的JDBC 驱动程序。 由于我使用的是 Java 1.7 JVM,并且它是这样写的:

如果您使用的是 1.6 或 1.7 JVM,那么您应该使用 JDBC4 版本。

我下载了 JDBC4。问题是其中不存在PoolingDataSource's。 如果您获得 JDBC3,您可以使用 org.postgresql.jdbc3.Jdbc3PoolingDataSource 或 其他可见here

在 JDBC4 中是否有任何池化 DataSource 我不知道,或者应该怎么做 我改用?我在 JDBC4 中找到的唯一东西是 PGPoolingDataSource 但我不是 确定我是否应该使用它,因为基于他们的 Java 文档消息:

如果您的服务器/中间件供应商提供与 PostgreSQL ConnectionPoolDataSource 实现接口的连接池实现,请不要使用它!

【问题讨论】:

    标签: postgresql jdbc connection-pooling


    【解决方案1】:

    使用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

    【讨论】:

      猜你喜欢
      • 2018-04-30
      • 2010-11-30
      • 2016-07-06
      • 2011-03-06
      • 2011-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-02
      相关资源
      最近更新 更多