Как установить Spring/Heroku/postgres SSL datasource
Я пытаюсь создать источник данных из своего приложения Heroku/ Spring в базу данных postgres postgres.heroku.com. Вот мой applicationContext.xml
фрагмент.
<bean id="securityDataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="org.postgresql.Driver"/>
<property name="url" value="jdbc:postgresql://url/dstabase"/>
<property name="username" value="user"/>
<property name="password" value="password"/>
</bean>
Но когда я запускаю приложение, tomcat дает эту ошибку:
Cannot create PoolableConnectionFactory (FATAL: no pg_hba.conf entry for host "10.11.12.13", user "username", database "database", SSL off)
Как я могу настроить его для использования SSL? Мне нужно это, чтобы установить связь с postgres.heroku.com
Ответы
Ответ 1
Вам необходимо расширить URL-адрес соединения JDBC с соответствующей информацией ssl.
URL-адрес вашего JDBC-соединения должен включать следующее:
ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory
Итак, в вашем случае URL-адрес будет выглядеть следующим образом:
jdbc:postgresql://url/dstabase?ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory
Источник этой информации:
https://devcenter.heroku.com/articles/connecting-to-relational-databases-on-heroku-with-java#connecting-to-a-database-remotely
Ответ 2
После меня работали:
jdbc:postgresql://url/databaseName?sslmode=require&sslfactory=org.postgresql.ssl.NonValidatingFactory
Я бы изменил ssl=true
на sslmode=require
Ответ 3
При подключении к Heroku Postgres с jdbc вы также иногда получите сообщение об ошибке, если вы не добавите параметры SSL в URL:
ssl=true
sslfactory=org.postgresql.ssl.NonValidatingFactory
Ответ 4
Это сработало для меня:
<bean id="securityDataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="org.postgresql.Driver"/>
<property name="url" value="jdbc:postgresql://host:port/database?ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory"/>
<property name="username" value="user"/>
<property name="password" value="password"/>
</bean>
Ошибка, которую я делал, заключалась в использовании и вместо &
(глупо я знаю)
?ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory
и да ссылка определенно полезна:
https://devcenter.heroku.com/articles/connecting-to-relational-databases-on-heroku-with-java#connecting-to-a-database-remotely
И Имейте в виду:
в этой ссылке используется jdbc: postgres://host.., который может вам не подходит (используйте postgresql), если Нет подходящего драйвера Sql ошибка