web-dev-qa-db-ja.com

ユーザー定義の環境変数をTomcatに渡す

WebアプリケーションのコーディングにEclipseを使用しています。この中で、次のような環境変数を渡しました。

  1. [プロジェクト]-> [別のユーザーとして実行]-> [実行構成]。そして、環境タブを選択しました。
  2. _APP_MASTER_PASSWORD_という名前の新しい環境変数とその値を追加します。

この値にアクセスするには、Java code as System.getenv("APP_MASTER_PASSWORD"))を使用します。

しかし今、この環境変数をTomcatに渡し、Eclipseを渡すのではなく、アプリケーションでアクセスしたいと思います。

では、どのようにしてそのような変数をTomcatに渡すことができますか?

私はそれについてグーグルで調べた。しかし、解決策は得られませんでした。

ありがとうございました。

17
Naresh J

Setenv.batまたは.shを使用して、環境変数をTomcatに渡すことができます。

CATALINA_BASE/bin/setenv.batまたは.shファイルを作成し、次の行をその中に入れてから、Tomcatを開始します。

Windowsの場合:

set APP_MASTER_PASSWORD=foo

Unixライクシステムの場合:

export APP_MASTER_PASSWORD=foo

34
Shinichi Kai

この場合、環境変数の代わりにシステムプロパティを使用する必要があります。 Java_OPTSのTomcatスクリプトを編集し、次のようなプロパティを追加します。

_-DAPP_MASTER_PASSWORD=foo_

そしてあなたのコードに書いてください

System.getProperty("APP_MASTER_PASSWORD");

EclipseでもJava_OPTSの代わりにこれを行うことができます。実行構成内のVM parameters)の行をコピーします。

19
Ankit

_<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_を取得できます。

9
NINCOMPOOP

UnixおよびMacシステムの場合、Tomcatフォルダー内の/bin/setenv.shに移動します

以下の行を追加します

_export Java_OPTS="$Java_OPTS -DAPP_MASTER_PASSWORD=mypass"_

System.getProperty("APP_MASTER_PASSWORD")は_"mypass"_を返します

0
IamVickyAV

Eclipse(「サーバー」ビュー)からTomcatを起動する場合、「Apache Tomcat/Tomcat…」という「実行/実行構成」(メニュー)エントリが必要です。実行構成のリストでこのエントリを選択すると、「環境」というラベルの付いた複数のタブのあるウィンドウが表示されます。そこで、Tomcatの環境変数を設定できます。必ずTomcatを再起動してください。

0
Renardo

環境変数は、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")
0
slartidan

Windowsの場合、setenv.batが見つからない場合は、catalina.batの2行目(@echo offの後)に以下を追加します。
SET APP_MASTER_PASSWORD = foo

最良のアプローチではないかもしれませんが、動作

0
ObviousChild