将应用程序从 Java 应用服务器 GlassFish 移植到 Wildfly 时,我注意到 Wildfly 中的应用程序将环境变量报告为空,而 GlassFish 则报告一个值。应用程序代码相同;检索环境变量的命令是:
System.getenv("MY_ENV_VAR");
我在 Linux 上,并在启动 GlassFish 和 Wildfly 的用户的 .bashrc 文件中设置环境变量。我尝试将该变量添加到 Wildfly 的 bin/standalone.conf、bin/standalone.sh 和 bin/.jbossclirc 文件中,但没有成功。
以下是 JBoss 论坛上类似的未解答的问题:
https://developer.jboss.org/thread/229862
注意:环境变量和系统属性不是一回事。一种解决方法是重写我的所有应用程序以使用系统属性而不是环境变量,但如果可能的话,我想避免这样做。
答案1
我通过按照此处所述在 systemd 配置文件中设置环境变量来使其工作:
GlassFish 和 Wildfly 之间的区别似乎确实在于服务脚本,因为 GlassFish 使用较旧的 /etc/init.d,而 Wildfly 使用较新的 /etc/systemd。