При портировании приложения с сервера приложений 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
Примечание: переменная среды и системное свойство — это не одно и то же. Обходным путем было бы переписать все мои приложения так, чтобы они использовали системные свойства вместо переменных среды, но я хотел бы этого избежать, если это возможно.
решение1
Мне удалось это сделать, настроив переменные среды в файле конфигурации systemd, как описано здесь:
Как установить переменную окружения в службе systemd?
Похоже, разница между GlassFish и Wildfly на самом деле заключалась в скриптах служб, поскольку GlassFish использовал старый /etc/init.d, а Wildfly — новый /etc/systemd.