Ответ 1
Использовать org.postgresql.ds.PGPoolingDataSource
Вот пример: http://jdbc.postgresql.org/documentation/head/ds-ds.html
Я проверил этот пример с помощью драйвера JDBC4, и он отлично работал.
Однако в документации по этой ссылке они не рекомендуют использовать источник данных пула postgreSQL из-за ограничений:
Реализация пула данных-источников, представленная здесь, не является самой многофункциональной в мире. Среди прочего, соединения никогда не закрываются, пока сам пул не закрыт; нет возможности сжать бассейн. Кроме того, соединения, запрошенные для пользователей, отличных от настроенного пользователем по умолчанию, не объединены. Его обработка ошибок иногда не может удалить сломанное соединение из пула. В общем случае не рекомендуется использовать пул соединений PostgreSQL˘. Проверьте свой сервер приложений или проверьте отличный проект DBCP jakarta commons.
Они рекомендуют использовать пул соединений DBCP: http://commons.apache.org/proper/commons-dbcp/ проверить это, это намного лучше - просто загрузите файлы библиотеки, поместите их в классную таблицу и импортируйте в проект, документацию из приведенная выше ссылка содержит примеры того, как использовать ее в коде.
Большинство (все?) Серверов приложений реализуют свои собственные пулы соединений, если вы используете сервер приложений, это лучший вариант.
Для примера Tomcat 7 имеет собственную реализацию пула соединений, он даже лучше, чем DBCP, проверьте документацию: http://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html