環境変数を読み取るようにWildflyを設定する方法

環境変数を読み取るようにWildflyを設定する方法

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 を使用していました。

関連情報