2013-10-06 31 views
11

Recentemente ho scaricato il driver JDBC per PostgreSQL da here. Dal momento che sto utilizzando Java 1.7 JVM ed è scritto:Pool di connessioni con PostgreSQL JDBC

Se si utilizza la JVM 1.6 o 1.7, quindi si dovrebbe utilizzare la versione JDBC4 .

Ho scaricato JDBC4. Il problema è che non esiste PoolingDataSource's in esso. Se si ottiene JDBC3 è possibile utilizzare org.postgresql.jdbc3.Jdbc3PoolingDataSource o altri come si vede here.

C'è qualche pool DataSource in JDBC4 che non conosco o che cosa dovrei usare ? L'unica cosa che ho trovato in JDBC4 è PGPoolingDataSource ma non sono sicuro se dovrei usare questo perché sulla base della loro Java Message doc:

Non utilizzare questa opzione se il fornitore di server/middleware fornisce un'implementazione del pooling di connessioni che si interfaccia con l'implementazione di PostgreSQL ConnectionPoolDataSource!

risposta

15

Usa org.postgresql.ds.PGPoolingDataSource
Ecco un esempio: http://jdbc.postgresql.org/documentation/head/ds-ds.html
Ho controllato questo esempio utilizzando il driver JDBC4 e ha funzionato bene.

Tuttavia nella documentazione da questo link scoraggiano usare postgreSQL mettono in comune fonte di dati a causa della sua limitazioni:

L'implementazione dei dati source pooling fornite qui non è il più ricco di funzionalità in tutto il mondo. Tra l'altro, le connessioni non vengono mai chiuse finché il pool stesso non viene chiuso; non c'è modo di restringere la piscina. Inoltre, le connessioni richieste per utenti diversi dall'utente predefinito non vengono raggruppate. La gestione degli errori a volte non è in grado di rimuovere una connessione interrotta dal pool. In generale, si sconsiglia di utilizzare il pool di connessione fornito da PostgreSQL. Controlla il tuo server delle applicazioni o controlla l'eccellente progetto DBCP di jakarta commons.

Si consiglia di utilizzare pool di connessioni DBCP: http://commons.apache.org/proper/commons-dbcp/ controllare, è molto meglio - basta scaricare i file di libreria, metterli in un classpatch e l'importazione per il progetto, la documentazione dal link qui sopra contiene esempi come utilizzare nel codice.

La maggior parte (tutti?) I server delle applicazioni implementano i propri pool di connessione, se si utilizza il server delle applicazioni, è l'opzione migliore.
Per esempio Tomcat 7 ha la propria implementazione del pool di connessioni, è persino migliore di DBCP, controlla la documentazione: http://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html

Problemi correlati