2011-07-15 21 views
0

私はglassfishv3インストール用のシステムユーザーを作成しました。このユーザーは対話シェルを持たないため、glassfishをasadminで起動すると、このユーザーに環境変数は設定されません。Ubuntuでシステムユーザの環境変数を設定するにはどうすればよいですか?

私は私のinitスクリプトで次のコマンドを使用して環境にコピーしようとしています。asadminの内部

jhv=$(grep JAVA_HOME /etc/environment) 
$jhv 
export JAVA_HOME  
sudo -u glassfish -E $glassfishpath/asadmin start-domain domain1 

私が正しくJAVA_HOMEを出力$ JAVA_HOMEをエコー。

グラスフィッシュが起動すると、環境キー値のペアを表示する1つの方法でWebサービスを起動します。 JAVA_HOMEはそれらの間にありません。これにより、glassfishがJAVA_HOMEを必要とするスクリプトを実行する際に問題が発生します。

システムユーザ/グラスフィッシュ環境でJAVA_HOMEを設定するにはどうすれば、Javaコンテナを起動してもそれが持続するようにしますか?

+0

私はGFに精通していません。 「Webサービスを起動する」とは何を意味しますか?また、どのようにキーの値のペアを印刷していますか? –

+0

@ Ryan Stewart - GlassfishはJava Webコンテナであり、Java Webサービスをホストできます。コンテナが認識しているアプリケーション(Webサービス)は、クライアントによって呼び出されたときに作成または初期化されます。あなたの他の質問については、Javaは_System.getenv(); _を使用して環境変数を取得する機能を持っています。これは環境エントリのマップを返します。エントリを反復処理することによって、キー値のペアをStringに追加し、そのStringをサービスから応答として返すことができます。 – Setix

+0

申し訳ありませんが、私はJava開発者であることに気付いたので、私はその領域を知っています。私はGFを使いませんでした。私はTomcatを中心に仕事をしています。 GFが私が使用した他のコンテナと大きく異なるのでなければ、実際にはWebサービスのために別々のOSプロセスを生成するわけではありません。 WARをデプロイするだけですか? –

答えて

0

通常、解決策は、-Eフラグをsudoコマンドに追加することです。このフラグは、sudoに、rootアクセスへのドロップダウン時に現在のユーザーの環境変数を維持するよう指示します。

あなたは既にこのフラグを使用しているようですので、問題の内容がわかりません。あなたのスクリプトで旗が黙って失敗し、あなたに通知されていない可能性があります。シェルのコマンドマニュアルをシェルで実行しようとしましたか?結果/出力は何ですか?

+0

sudoによって実行されているasadminスクリプトでJAVA_HOMEが正しく設定されているとの質問があります。つまり、-Eは動作していますが、値はどこかで失われています。 –

関連する問題