Process myProcess = Runtime.getRuntime.exec(cmd) を使用している Web アプリケーションです。現在、Ubuntu Linux でホストされている Tomcat を使用して展開されています。
このアプリケーションは、私の開発マシン (Core2 duo、2GB RAM OS: UBUNTU 11.04) で正常に動作します。
ただし、仮想サーバー (1GB RAM、Xeon プロセッサ) で同じものをホストすると、Runtime.getRuntime.exec(cmd) 呼び出しが失敗します。サブプロセスを作成できません。
同じサブプロセスが作成され、開発マシンで期待どおりの出力が得られました。
アプリケーションでは、Tomcat にデプロイされたサーブレットで Java クラスを呼び出しており、正常に実行され、出力も問題ありません。以下は同じコードスニペットです。
from the servlet
uploadservlet.java
+-----------+
CalculateDuration dur=new CalculateDuration();
Map<String, Integer> durationmap=dur.conversion(al);
+-------------+
Caclulateduration.java
+------------------+
{
conversion(ArrayList<String> b)
{
StringBuilder sb = new StringBuilder();
sb.append( "hello.o"); /* Name of the sample executable */
...
Process p = Runtime.getRuntime().exec(sb.toString() ); //struck at this line.subprocess not created on my vps system
...
+------------------+
Standalone Caclulateduration.java は、仮想サーバー上で実行されます。
この問題は、仮想サーバーの物理メモリが不足している (getRunTime が失敗する) ために発生する可能性がありますか、ここに何かが欠けている可能性があります。ルート化するためのツール、コマンド、またはメソッドがこの問題を引き起こします。
ご意見をお待ちしております。