2016-06-19 2 views
0

Я не могу подключиться к базе данных PostgreSQL из моей Java программы -OpenShift PostgreSQL соединение из программы Java

Моего Java код:

Class.forName("org.postgresql.Driver"); 
connection = DriverManager.getConnection("jdbc:postgresql:$OPENSHIFT_POSTGRESQL_DB_HOST:$OPENSHIFT_POSTGRESQL_DB_PORT", "USERNAME", "PASSWORD"); 

Где USERNAME и PASSWORD правильны для картриджа базы данных на OpenShift ,

Приложение My Java находится в том же картридже, что и мой сервер базы данных.

При попытке доступа к базе данных, я получаю стандартное исключение нулевого указателя, и при поиске через журналы, у меня есть:

org.postgresql.util.PSQLException: Connection to localhost:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections. 

Я предполагаю, что OpenShift не позволяет программам подключаться к внутренним базам данных , но я не уверен, как обойти это. Есть идеи?

Я попытался изменить IP из переменных среды на внешний IP-адрес Postenshift, но я получаю от него такую ​​же ошибку.

Заранее благодарен!

ответ

0

Вы не читаете переменные окружения. $ OPENSHIFT_POSTGRESQL_DB_HOST и $ OPENSHIFT_POSTGRESQL_DB_PORT являются переменными среды. Если вы используете ssh для экземпляра и запускаете «env», вы увидите все переменные среды, включая их. Но в вашем

DriverManager.getConnection("...{connection string}...") 

эти переменные не заменяются.

См. this и this tutorial о том, как читать переменные среды.