2013-10-06 3 views
11

Недавно я загрузил драйвер JDBC для PostgreSQL с here. Поскольку я использую Java 1.7 JVM, и это написано:Пул соединений с PostgreSQL JDBC

Если вы используете 1.6 или 1.7 JVM, то вы должны использовать версию JDBC4 .

Я загружаю JDBC4. Проблема в том, что в нем нет PoolingDataSource's. Если вы получаете JDBC3, вы можете использовать org.postgresql.jdbc3.Jdbc3PoolingDataSource или других, как видно here.

Есть ли пул DataSource в JDBC4, о котором я не знаю, или что должно быть Вместо этого я использую? Единственное, что я нашел в JDBC4 это PGPoolingDataSource, но я не уверен, если я должен использовать это, потому что на основе их Java док сообщения:

Не используйте это, если ваш сервер/поставщик промежуточного программного обеспечения обеспечивает реализация объединения пулов, которая взаимодействует с реализацией PostgreSQL ConnectionPoolDataSource!

ответ

15

Использование org.postgresql.ds.PGPoolingDataSource
Вот пример: http://jdbc.postgresql.org/documentation/head/ds-ds.html
Я проверил этот пример, используя драйвер JDBC4 и он работал отлично.

Однако в документации по этой ссылке они препятствуют от использования PostGreSQL источника данных пула из-за его ограничение:

Реализация данных источника пулов, представленная здесь, не самый навороченный в мире. Среди прочего, соединения никогда не закрываются, пока сам пул не закрыт; нет возможности сжать бассейн. Кроме того, соединения, запрошенные для пользователей, отличных от настроенного пользователем по умолчанию, не объединены. Его обработка ошибок иногда не может удалить сломанное соединение из пула. В общем случае не рекомендуется использовать пул соединений PostgreSQL˘. Проверьте свой сервер приложений или проверьте отличный проект DBCP jakarta commons.

Они рекомендуют использовать пул соединений ДБХП: http://commons.apache.org/proper/commons-dbcp/ проверить его, гораздо лучше - просто скачайте файлы библиотеки, поместите их в classpatch и импорта в проект, документация по ссылке выше, содержит примеры, как использовать это в коде.

Большинство (все?) Серверов приложений реализуют свои собственные пулы соединений, если вы используете сервер приложений, это лучший вариант.
Для примера Tomcat 7 имеет собственную реализацию пула соединений, он даже лучше, чем DBCP, проверьте документацию: http://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html

Смежные вопросы