17

我正在尝试创建一个从 Heroku/Spring 应用程序到 postgres.heroku.com postgres 数据库的数据源。这是我的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 的连接

4

4 回答 4

28

您需要使用相关的 ssl 信息扩展您的 JDBC 连接 URL。

您的 JDBC 连接 URL 需要包含以下内容:

ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory

因此,在您的情况下,URL 将是:

jdbc:postgresql://url/dstabase?ssl=true&amp;sslfactory=org.postgresql.ssl.NonValidatingFactory

此信息的来源: https ://devcenter.heroku.com/articles/connecting-to-relational-databases-on-heroku-with-java#connecting-to-a-database-remotely

于 2012-08-07T09:21:04.923 回答
5

以下为我工作:

jdbc:postgresql://url/databaseName?sslmode=require&amp;sslfactory=org.postgresql.ssl.NonValidatingFactory

ssl=true我想改成sslmode=require

于 2017-10-25T13:25:23.417 回答
4

使用 jdbc 连接 Heroku Postgres 时,有时还会出现错误,除非您将 SSL 参数添加到 url:

ssl=true
sslfactory=org.postgresql.ssl.NonValidatingFactory
于 2013-09-01T02:49:38.133 回答
3

它对我有用:

  <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&amp;sslfactory=org.postgresql.ssl.NonValidatingFactory"/>
        <property name="username" value="user"/>
        <property name="password" value="password"/>
    </bean>

我做的错误是使用 & 而不是&amp;(我知道很傻)

 ?ssl=true&amp;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..如果没有发生合适的 Sql 驱动程序错误,则可能不适合您(请改用postgresql )

于 2014-07-12T18:32:08.097 回答