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,
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
.
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.
Dies funktioniert wahrscheinlich nicht, weil $HOSTNAME
nicht wirklich eine Umgebungsvariable zu sein scheint:
Also muss es eine andere spezielle Bash-Sache sein.
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.
Tags und Links configuration akka playframework typesafe