2010-11-19 18 views
1

OK、これは醜いです。私は、Linuxボックス(CentOS 5)上のTomcat 6インスタンスで実行される.warファイルを持っています。 Javaコードには、Runtime.exec(cmd)メソッドへの呼び出しが含まれています。このメソッドは、ネイティブアプリケーションを実行する1行のシェルスクリプトにシェルすることができます。 (R、興味があれば...)ネイティブアプリには、データベースにアクセスするような環境変数を設定する必要があることを除けば、すべてうまくいきます。私はJavaコードを編集して再コンパイルできません。私は.warファイルの内容を編集することができると思うが、私は何を編集するのか分からない。しかし、私はそれが問題だと思います - 子プロセスは通常、親の環境を継承します。ですから、ORACLE_HOMEやその他の環境変数を組み込むためにはJVMの環境が必要です。Tomcatで動作するアプリケーションの環境変数

tomcatプロセスがロードされるときに使用されるbin/setenv.shファイルに変数を入れることができることが分かりました。そこに環境変数を追加しようとしましたが、うまくいきません。

ので:

  1. 私exec'dアプリケーションはまた、これらの変数を継承するように、JVMプロセスレベルにまで継承される環境変数を設定する方法はありますか?
  2. そうでない場合は、変数を手動で設定するには、.warファイルで何を編集する必要がありますか? (そして醜いのは何ですか?)

この醜いハックを手伝ってくれてありがとう!

答えて

0

#2の答えは簡単です。前述のように、exec()コールはアプリケーションを実行するシェルスクリプトを呼び出します。私はちょうど.warファイルを開いて、それにexport FOO=bar行を追加し、結果をtomcat webappsディレクトリに戻して、うまくいきました。

ひどい醜い。誰かがオプション#1のために良い答えを持っているなら、彼らはこれに答えるためのクレジットを得るでしょう...

関連する問題