2013-10-06 235 views
11

最近,我從here下載了PostgreSQL的JDBC驅動程序。 由於我使用Java 1.7 JVM,它的寫:使用PostgreSQL JDBC連接池

如果您使用的是1.6或1.7 JVM,那麼你應該使用JDBC4 版本。

我下載了JDBC4。問題是它裏面不存在PoolingDataSource's。 如果你得到JDBC3,你可以使用org.postgresql.jdbc3.Jdbc3PoolingDataSource或 其他人看到here

JDBC4中有沒有我不知道的合併DataSource,或者我應該使用什麼 ?我在JDBC4發現的唯一的事情就是PGPoolingDataSource,但我不 確定,因爲根據他們的Java doc的消息,如果我應該這樣做:

不要使用這個,如果你的服務器/中間件供應商提供一個與PostgreSQL ConnectionPoolDataSource實現接口的連接池實現!

回答

15

使用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/ 檢查它,它是要好得多 - 只需下載庫文件,將它們放置在一個classpatch和進口的項目,從上面的鏈接文檔包含例子如何使用它在代碼中。

大多數(所有?)應用程序服務器都實現它們自己的連接池,如果您使用的是應用程序服務器,那麼這是最好的選擇。
例如Tomcat 7有自己的連接池實現,它甚至比DBCP更好,查看文檔:http://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html