При переносе приложения с сервера приложений Java GlassFish на Wildfly я заметил, что приложения в Wildfly сообщают о переменных среды как пустые, тогда как GlassFish сообщает о значении. Код приложения такой же; команда для получения переменной окружения:
System.getenv("MY_ENV_VAR");
Я работаю в Linux и устанавливаю переменную среды в файле .bashrc пользователя, запускающего GlassFish и Wildfly. Я безуспешно пытался добавить переменную в файлы bin / standalone.conf, bin / standalone.sh и bin / .jbossclirc Wildfly.
Вот аналогичный вопрос без ответа на форуме JBoss:
https://developer.jboss.org/thread/229862
Примечание: переменная среды и системное свойство - это не одно и то же. Обойти эту проблему можно было бы в том, чтобы переписать все мои приложения для использования системных свойств вместо переменных среды, но я бы хотел избежать этого, если это возможно.
Я заставил его работать, установив переменные среды в файле конфигурации systemd, как описано здесь:
Как установить переменную среды в службе systemd?
Похоже, разница между GlassFish и Wildfly действительно заключалась в сценариях обслуживания, поскольку GlassFish использовал более старый /etc/init.d, а Wildfly - более новый / etc / systemd.