Java Web サービス コード ベース (BEA/Oracle Weblogic) を継承しており、Web サービスから外部バックグラウンド アプリケーションを開始/起動する必要があります。
私はすでに試しました:
ProcessBuilder pb = new ProcessBuilder(arg);
pb.start();
としても:
Runtime.exec(cmdString);
しかし、この方法でアプリケーションを起動すると、奇妙な動作が発生します (つまり、起動したアプリケーションは、プロセスがまだアクティブであっても動作を停止します。- 通常のコマンド ラインから手動で実行すると、アプリケーションは正常に動作します)。
外部プロセスを起動するより良い方法はありますか?
編集: - - - - - - - - - - -
問題を明らかにするのに役立つ追加情報があります。
- 開始しようとしているプロセスが完了するまでに数時間かかるため、Web サービスで ( を使用して) 完了するのを待つ
waitfor()
ことは理想的なシナリオではありません。 - はい、Web サービスから開始しようとしているプロセスは、仲間のチーム メンバーによって作成されました [キュー: 目が回る... 今]
プロセス ビルダーを使用してbash スクリプトを開始すると、外部アプリケーションがバックグラウンド プロセスとして起動されます(「&」を使用)。
#!/bin/bash
java -jar myApp.jar &
これにより明らかに孤立したプロセスが作成されますが、少なくともアプリケーションは引き続き実行されます。