2017-09-12 5 views
0

Ich habe eine Java-Webanwendung, die erfolgreich auf Tomcat läuft.OpenShift 3: Zugriff auf POSTGRESQL-POD-Umgebungsvariablen mit Java?

ich drei Umgebungsvariablen in meinem myapp Bereitstellung erstellt haben:

MY_ENV_VAR_1=dbuser 
MY_ENV_VAR_2=dbpassword 
MY_ENV_VAR_3=dbname 

Ich kann diese Werte mit Standard-Java-Code erhalten:

myEnvVar1 = System.getenv("MY_ENV_VAR_1"); 
myEnvVar2 = System.getenv("MY_ENV_VAR_2"); 
myEnvVar3 = System.getenv("MY_ENV_VAR_3"); 

habe ich ‚normale Java 'Code zum Verbinden mit der Datenbank:

Verbindung = DriverManager.getConnection ("jdbc: postgresql: //" + postgresqlServiceHost + ":" + postgresqlServicePort + "/" + myEnvVar3, myEnvVar1, myEnvVar2);

So kann ich erfolgreich mit der Datenbank verbinden.

Das Problem ist:

I (in Webkonsole) sehen kann, aber nicht die Werte aus den drei Umgebungsvariablen in dem postgresql Einsatz kommen:

POSTGRESQL_USER 
POSTGRESQL_PASSWORD 
POSTGRESQL_DATABASE 

das 'normale' System. getenv ("POSTGRESQL_USER"); funktioniert nicht.

Also, kann mir bitte jemand sagen, wie man mit Java-Code auf die Werte dieser drei postgresql Pod-Umgebungsvariablen zugreifen kann?

+0

Haben Sie sie auf die Deployment-Konfiguration für Ihre Anwendung hinzufügen? Sie werden beim Bereitstellen der Datenbank nicht automatisch hinzugefügt. Siehe Beispiel für das Hinzufügen von Datenbankumgebungsvariablen zur Anwendung in https://www.openshift.com/promotions/for-developers.html –

+0

Danke Graham, Ich fand Ihr Buch früher und sah, dass env vars nicht zu der App hinzugefügt werden. Also habe ich sie manuell hinzugefügt und es hat angefangen zu arbeiten. Ist das der richtige Weg? Für zukünftige Referenz ... – Lyndon

+0

Für jetzt ist es. Wenn der Open Service Broker ordnungsgemäß in OpenShift integriert ist, kann bei der Verknüpfung einer Datenbank mit einer Anwendung die Umgebungsvariable automatisch aufgefüllt werden. Ich weiß nicht, wann sie sein könnten. –

Antwort

0

So ist die einfache Antwort ist:

Sie manuell die folgenden drei Umgebungsvariablen an die Einsatzumgebung der Anwendung hinzuzufügen, die auf die Datenbank zugreifen werden.

POSTGRESQL_USER 
POSTGRESQL_PASSWORD 
POSTGRESQL_DATABASE 

Sie müssen es tun, genau in der gleichen Art und Weise, wie Sie sie in der postgresql Deployment-Umgebung zu sehen.

Es ist wirklich so einfach ...

In Java App:

String postgresqlServiceHost = System.getenv("POSTGRESQL_SERVICE_HOST"); 
String postgresqlServicePort = System.getenv("POSTGRESQL_SERVICE_PORT"); 
String postgresqlDatabase = System.getenv("POSTGRESQL_DATABASE"); 
String postgresqlUser = System.getenv("POSTGRESQL_USER"); 
String postgresqlPassword = System.getenv("POSTGRESQL_PASSWORD"); 

Connection connection = DriverManager.getConnection("jdbc:postgresql://" + postgresqlServiceHost + ":" + postgresqlServicePort + "/" + postgresqlDatabase, postgresqlUser, postgresqlPassword);