Beim Portieren einer Anwendung vom Java-Anwendungsserver GlassFish nach Wildfly fiel mir auf, dass Anwendungen in Wildfly Umgebungsvariablen als leer melden, während GlassFish einen Wert meldet. Der Anwendungscode ist derselbe; der Befehl zum Abrufen der Umgebungsvariablen lautet:
System.getenv("MY_ENV_VAR");
Ich verwende Linux und lege die Umgebungsvariable in der .bashrc-Datei des Benutzers fest, der GlassFish und Wildfly startet. Ich habe erfolglos versucht, die Variable zu den Dateien bin/standalone.conf, bin/standalone.sh und bin/.jbossclirc von Wildfly hinzuzufügen.
Hier ist eine ähnliche unbeantwortete Frage im JBoss-Forum:
https://developer.jboss.org/thread/229862
Hinweis: Eine Umgebungsvariable und eine Systemeigenschaft sind nicht dasselbe. Eine Lösung wäre, alle meine Anwendungen so umzuschreiben, dass sie Systemeigenschaften anstelle von Umgebungsvariablen verwenden, aber das möchte ich nach Möglichkeit vermeiden.
Antwort1
Ich habe es zum Laufen gebracht, indem ich die Umgebungsvariablen in der systemd-Konfigurationsdatei wie hier beschrieben festgelegt habe:
Wie lege ich Umgebungsvariablen im Systemd-Dienst fest?
Es scheint, dass der Unterschied zwischen GlassFish und Wildfly wirklich bei den Service-Skripten lag, da GlassFish das ältere /etc/init.d verwendete, während Wildfly das neuere /etc/systemd verwendete.