システムプロパティに依存するJavaコードがありますsuper.secret.password
。アプリを実行するときに、そのプロパティを設定する必要があります。アプリはシェルスクリプトによって起動され、パスワードは最小限の読み取り権限でファイルに保存されます。
私は本当に書きたくありません:
java -Dsuper.secret.password=letmein gov.fortknox.MyApp
なぜなら、マシンに乗って実行したり、パスワードを確認しps
たりできる人なら誰でも。top
それで、コマンドラインで公開せずにシステムプロパティを設定する良い方法はありますか?
私たちが思いついた唯一の一般的な解決策は、ファイルからシステムプロパティを読み取り、JNI呼び出しAPIを使用してJVMを起動する小さなCプログラムを作成することです。言うまでもなく、私たちはこれを行うことに熱心ではありません。
コマンドラインを使用せずに設定する方法がない場合、コマンドラインを詮索好きな目から隠す方法はありますか?Red Hat Enterprise LinuxServer5.5を使用しています。
問題のアプリは実際にはJBossEAP4.3.0であり、システムプロパティを使用し${like.this}
てXML構成ファイルに置換構造()を入力しています。JBoss固有のソリューションがあります-SystemPropertiesServiceを使用するか(デフォルトでは、デプロイディレクトリのproperties-service.xmlファイルを介して設定されます)、run.shに-Pオプションを渡します。ただし、これが任意のJavaプログラムである可能性がある、より一般的なケースに興味があります。