web-dev-qa-db-ja.com

tomcat 8 catalina.properties変数を追加

Tomcatアプリから環境変数を読み取る必要があります。私がやろうとした:

/opt/Tomcat/conf/catalina.properties

最後にaddint:

my.special.variable=some_value

そしてそれを読んで

System.getenv("my.special.variable")

ヌルになる

OSレベル(linux ubuntu)でいくつか定義していますが、それらを取得した結果はTomcat root-/ opt/Tomcatです。

例えば ​​:

with printenv変数HOMEが表示されます(echo $ HOMEも使用できます)。 Tomcatの外部にあるプログラムからコードを実行する-結果は正しい-/ home/user。

Tomcatにデプロイされたアプリのまったく同じコードは、/ opt/Tomcatを返します。

1
Vasil Koicev

変数はsetenv.sh(Linux/UNIX)またはsetenv.bat(Windows)で定義できます。実行しているO/Sに適した方法で変数を定義します。 Linux/UNIXの場合、変数をエクスポートする必要があります。 Tomcatを起動する環境でそれらを定義することもできます。

アプリケーション(ローカル)の変更用にappenv.shまたはappenv.batファイルを作成することもできます。詳細については、既存のsetenv.shまたはsetenv.batファイルをお読みください。

ピリオドとハイフンは、環境変数には無効です。伝統的に、名前は大文字で大文字に変換され、ピリオドとハイフンがアンダースコアに変更されます。これはMY_SPECIAL_VARIABLEという名前になります。これは次のような行で定義されます。

export MY_SPECIAL_VARIABLE=some.value

また、Javaシステムプロパティを定義するには、次のような文字列 '-Dmy.special.variable = some_valueto the command line used to start Tomcat. This is done in the same file. Insetenv.sh`を追加します。

export Java_OPTS="$Java_OPTS -Dmy.special.variable=some_value"

このファイルを使用して、Java構成を調整することもできます。Java_OPTSシステム変数がTomcatの起動に使用される環境で定義されている場合、その値がコマンドラインに追加されます。

Javaシステムプロパティを使用する場合、System.getPropertyを呼び出して取得します。これは次のようにコード化されます。

    System.getProperty("my.special.variable");
4
BillThor

環境変数はTomcatのプロパティではありません。

たとえば、実際のコード内ではプロパティを使用できません。 server.xml。

System.getenvで取得できる環境変数を使用する場合は、オペレーティングシステムでそれらを定義する必要があります。それはかなり異なります。古典的なLinuxの例は/etc/default/Tomcatまたはsystemdサービス内。

0
towo