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 構成ファイルで環境変数を設定することで動作しました。
systemd サービスで環境変数を設定するにはどうすればいいですか?
GlassFish と Wildfly の違いは実際にはサービス スクリプトにあるようで、GlassFish は古い /etc/init.d を使用していましたが、Wildfly は新しい /etc/systemd を使用していました。