WebアプリケーションのコーディングにEclipseを使用しています。この中で、次のような環境変数を渡しました。
APP_MASTER_PASSWORD
_という名前の新しい環境変数とその値を追加します。この値にアクセスするには、Java code as System.getenv("APP_MASTER_PASSWORD")
)を使用します。
しかし今、この環境変数をTomcatに渡し、Eclipseを渡すのではなく、アプリケーションでアクセスしたいと思います。
では、どのようにしてそのような変数をTomcatに渡すことができますか?
私はそれについてグーグルで調べた。しかし、解決策は得られませんでした。
ありがとうございました。
Setenv.batまたは.shを使用して、環境変数をTomcatに渡すことができます。
CATALINA_BASE/bin/setenv.batまたは.shファイルを作成し、次の行をその中に入れてから、Tomcatを開始します。
Windowsの場合:
set APP_MASTER_PASSWORD=foo
Unixライクシステムの場合:
export APP_MASTER_PASSWORD=foo
この場合、環境変数の代わりにシステムプロパティを使用する必要があります。 Java_OPTSのTomcatスクリプトを編集し、次のようなプロパティを追加します。
_-DAPP_MASTER_PASSWORD=foo
_
そしてあなたのコードに書いてください
System.getProperty("APP_MASTER_PASSWORD");
EclipseでもJava_OPTSの代わりにこれを行うことができます。実行構成内のVM parameters)の行をコピーします。
_<Environment>
_マークアップで指定された環境エントリはJNDIであり、Java:/comp/env
_の下で InitialContext.lookup を使用してアクセスできます。 InitialContext の環境パラメーターを使用して、環境プロパティを [〜#〜] jndi [〜#〜] に指定できます。コンストラクターおよび applicationリソースファイル 。
System.getEnv()
は、Tomcatプロセス自体のシステム環境変数に関するものです。
Bashコマンドを使用して環境変数を設定するには:_export Tomcat_OPTS=-Dmy.bar=foo
_、Tomcatを起動するには:_./startup.sh
_システムプロパティbar
の値を取得するにはSystem.getProperty()
を使用します。 System.getEnv()
を使用して、環境変数、つまり_Tomcat_OPTS
_を取得できます。
UnixおよびMacシステムの場合、Tomcatフォルダー内の/bin/setenv.shに移動します
以下の行を追加します
_export Java_OPTS="$Java_OPTS -DAPP_MASTER_PASSWORD=mypass"
_
System.getProperty("APP_MASTER_PASSWORD")
は_"mypass"
_を返します
Eclipse(「サーバー」ビュー)からTomcatを起動する場合、「Apache Tomcat/Tomcat…」という「実行/実行構成」(メニュー)エントリが必要です。実行構成のリストでこのエントリを選択すると、「環境」というラベルの付いた複数のタブのあるウィンドウが表示されます。そこで、Tomcatの環境変数を設定できます。必ずTomcatを再起動してください。
環境変数は、Tomcatインストールディレクトリのbin
フォルダーにsetenv.bat
(windows)またはsetenv.sh
(unix)ファイルを作成することにより設定できます。ただし、環境変数にはコード内からアクセスできません。
システムプロパティは、Javaプロセスの-D
引数によって設定されます。環境変数Java_OPTS
でJava開始引数を定義できます。
私の提案は、これら2つのメカニズムの組み合わせです。 Apache-Tomcat-0.0.0\bin\setenv.bat
に次を記述します。
set Java_OPTS=-DAPP_MASTER_PASSWORD=password1
Javaコードに次のように記述します。
System.getProperty("APP_MASTER_PASSWORD")
Windowsの場合、setenv.batが見つからない場合は、catalina.batの2行目(@echo offの後)に以下を追加します。
SET APP_MASTER_PASSWORD = foo
最良のアプローチではないかもしれませんが、動作