我将spring应用程序部署到heroku。我有database.properties文件来保存数据库信息。现在,我想从这个属性文件连接我的heroku数据库。
database.properties文件:
database.driverClassName=org.postgresql.Driver
database.url=jdbc\:postgresql\://host\:5432/dbname
database.username=username
database.password=pass
ssl=true
sslfactory=org.postgresql.ssl.NonValidatingFactory
我收到此错误:
no pg_hba.conf entry for host "somehost", user "someuser", database "somedb", SSL off
答案 0 :(得分:2)
默认情况下,PostgreSQL拒绝远程连接,您必须启用远程连接。看看http://www.turnkeylinux.org/docs/database-remote-access
答案 1 :(得分:1)
我只是在玩一些设置来找到如何注入这些参数:
ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory
基本上,我们需要在databaseUrl中添加它,但在我的spring roo应用程序中,它不允许我这样做..
但appcontext.xml中的connectionProperties
bean中还有另一个名为org.apache.commons.dbcp.BasicDataSource
的属性。
的applicationContext.xml:
<bean class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" id="dataSource">
<property name="driverClassName" value="${database.driverClassName}"/>
<property name="url" value="${database.url}"/>
<property name="username" value="${database.username}"/>
<property name="password" value="${database.password}"/>
<property name="connectionProperties" value="ssl=true;sslfactory=org.postgresql.ssl.NonValidatingFactory"></property>
它的工作但有一个问题,当我运行我的应用程序时,启动至少需要5分钟!所以我需要增加我的tomcat的超时设置。希望这有助于某人!干杯:)
答案 2 :(得分:0)
database.properties 仅用于填充 applicationContext.xml 值(通过 context:property-placeholder 标记定义)。因此,如果您不修改 dataSource bean定义,则新属性将不执行任何操作。
要解决您的问题,请按以下步骤操作:
修改&#34; database.properties&#34;包含 datatabase。作为 ssl 和 sslfactory 属性名称的前缀。
像这样修改applicationContext.xml:
<bean class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" id="dataSource">
<property name="driverClassName" value="${database.driverClassName}"/>
<property name="url" value="${database.url}"/>
<property name="username" value="${database.username}"/>
<property name="password" value="${database.password}"/>
<property name="ssl" value="${database.ssl}"/> <!-- NEW -->
<property name="sslFactory" value="${database.sslfactory}"/> <!-- NEW -->
<property name="testOnBorrow" value="true"/>
....
....
</bean>