Ao portar um aplicativo do servidor de aplicativos Java GlassFish para o Wildfly, percebi que os aplicativos no Wildfly relatam variáveis de ambiente como vazias, enquanto o GlassFish relata um valor. O código do aplicativo é o mesmo; o comando para recuperar a variável de ambiente é:
System.getenv("MY_ENV_VAR");
Estou no Linux e definindo a variável de ambiente no arquivo .bashrc do usuário que inicia o GlassFish e o Wildfly. Tentei adicionar a variável aos arquivos bin/standalone.conf, bin/standalone.sh e bin/.jbossclirc do Wildfly sem sucesso.
Aqui está uma pergunta semelhante sem resposta no JBoss Forum:
https://developer.jboss.org/thread/229862
Nota: uma variável de ambiente e uma propriedade do sistema não são a mesma coisa. Uma solução alternativa seria reescrever todos os meus aplicativos para usar propriedades do sistema em vez de variáveis de ambiente, mas gostaria de evitar isso, se possível.
Responder1
Eu fiz funcionar definindo as variáveis de ambiente no arquivo de configuração do systemd conforme descrito aqui:
Como definir a variável de ambiente no serviço systemd?
Parece que a diferença entre GlassFish e Wildfly estava realmente nos scripts de serviço, já que o GlassFish estava usando o /etc/init.d mais antigo enquanto o Wildfly estava usando o /etc/systemd mais recente.