Typesafe-Konfigurationsumgebungsvariablen

8

Der Versuch, ${HOSTNAME} in einer Konfigurationsdatei zu verwenden, funktioniert nicht! Laut der Dokumentation sollten Konfigurationsdateien Umgebungsvariablen auflösen, wie in der Dokumentation erwähnt:

  

Ersetzungen fallen auf Umgebungsvariablen zurück, wenn sie nicht in der Konfiguration selbst aufgelöst werden, also würde $ {HOME} wie erwartet funktionieren. Außerdem sind in den meisten Konfigurationen Systemeigenschaften integriert, sodass Sie $ {user.home} verwenden können.

Gibt es eine Möglichkeit, den Hostnamen in die Konfigurationsdatei zu bekommen?

Reproduktion
Fügen Sie host.name=${HOSTNAME} zu einer application.conf -Datei hinzu und versuchen Sie dann von überall darauf zuzugreifen. Versuchen Sie zum Beispiel,

hinzuzufügen %Vor%

an die Global.scala .

Umgebung
Dies wurde in einer RHEL6-Umgebung ausgeführt, in der echo $HOSTNAME precise32 erzeugt, also die Umgebungsvariable existiert, dies ist nicht das Programm hostname .

    
tysonjh 12.09.2013, 17:27
quelle

3 Antworten

7

Die Lösung scheint den Hostnamen über eine Systemeigenschaft als -Dhost.name=$HOSTNAME oder -Dhost.name=$(hostname) zu übergeben. Ich würde mir vorstellen, in Windows wäre es etwas anderes, aber das funktioniert für * NIX-Umgebungen.

Wenn niemand etwas sauberer finden kann, wird dies die akzeptierte Antwort sein.

    
tysonjh 13.09.2013, 15:05
quelle
6

Dies funktioniert wahrscheinlich nicht, weil $HOSTNAME nicht wirklich eine Umgebungsvariable zu sein scheint:

%Vor%

Also muss es eine andere spezielle Bash-Sache sein.

    
James Ward 12.09.2013 21:30
quelle
1

Sie sollten sehen, ob der Aufruf von System.getenv("HOSTNAME") einen Nicht-Null-Wert zurückgibt. Wenn nicht, dann ist HOSTNAME keine Umgebungsvariable entsprechend der Java-Laufzeit, was wichtig ist, um dies in einer typsicheren Konfiguration einer config-Eigenschaft zuzuordnen. Ich habe es mit HOSTNAME versucht und obwohl ich es in bash wiedergeben konnte, war es in Java nicht als env-Ersatz verfügbar. Ich änderte es in USER und alles funktionierte wie erwartet.

    
cmbaxter 12.09.2013 21:24
quelle