2012-08-06 13 views
12

Sto provando a creare un'origine dati dalla mia applicazione Heroku/Spring al database postgres postgres.heroku.com. Ecco il mio snippet applicationContext.xml.Come impostare l'origine dati Spring/Heroku/postgres SSL

<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> 

Ma quando faccio funzionare l'applicazione, Tomcat dà questo errore:

Cannot create PoolableConnectionFactory (FATAL: no pg_hba.conf entry for host "10.11.12.13", user "username", database "database", SSL off) 

Come posso configurarlo per utilizzare SSL? Ne ho bisogno per stabilire una connessione con postgres.heroku.com

+1

Got ammettere che ho mai usato PostgreSQL o Heroku, ma sto indovinando il seguente dovrebbe aiutare: https: // DEVC enter.heroku.com/articles/connecting-to-relational-databases-on-heroku-with-java#connecting-to-a-database-remotely – DB5

+0

@ DB5 che sembra corretto, si dovrebbe mettere come risposta – araqnid

+0

come ha fatto lo risolvi? –

risposta

22

È necessario estendere l'URL di connessione JDBC con le informazioni ssl pertinenti.

L'URL di connessione JDBC dovrà includere i seguenti:

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

Quindi nel tuo caso l'URL sarebbe:

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

Fonte per queste informazioni:

+0

questa impostazione apre una connessione SSL, ma non convalida i certificati. Se hai la possibilità di utilizzare i certificati come descritto qui: https://jdbc.postgresql.org/documentation/head/ssl-client.html – Markus

4

Quando collegandosi a Heroku Postgres con jdbc, a volte riceverai un errore a meno che tu non aggiunga i parametri SSL all'URL:

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

ha funzionato per me:

<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> 

L'errore che stavo facendo stava usando un & invece di &amp; (sciocco lo so)

?ssl=true&amp;sslfactory=org.postgresql.ssl.NonValidatingFactory 

e sì il link è sicuramente utile : https://devcenter.heroku.com/articles/connecting-to-relational-databases-on-heroku-with-java#connecting-to-a-database-remotely

E Conservare in mente: in questo link, jdbc: postgres: // host .. è usato, che potrebbe non essere adatto per voi (uso postgresql invece) se Non adatto errore di driver di SQL si verifica

5

seguito lavorata per me:

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

mi piacerebbe cambiare ssl=true a sslmode=require

+1

Grazie. Questo è stato utile anche per me ... !! –

Problemi correlati