1

私の状況:

Java EE アプリケーションには分析操作があり、この機能は java.lang.Runtime を使用してバッチ コマンドを実行することによって実装されます。最も深刻な問題は、この操作に時間がかかり、実行中にいくつかのエラーが発生し、プロセス ツリー全体がまだ生きているため、アプリケーションとサーバーのパフォーマンスが確実に低下することです。ですから、この問題を安全かつ正しく解決するためのアイデアを誰かに提供してもらえないかと思っていました。

これは私たちの開発において非常によくある質問であることを私は知っています。ここに例を示していただければ幸いです。

4

2 に答える 2

1

でアプリケーションを起動した場合

Process p = Runtime.exec("");

その後、あなたは呼び出すことができます

p.destroy();

あとは、実行中にエラーが発生した場合にバッチ処理自体を破棄できるようにできると良いと思います。詳細については、この質問を参照してください。

于 2012-07-11T02:42:28.263 に答える
0

http://commons.apache.org/exec/apidocs/index.htmlを参照してください。

インターフェイス CommandLauncher には、Process を返すいくつかの exec メソッドが含まれています。

ただし、プロセス ID を制御する方法はありません。これは OS の責任です。さらに、標準の Java API では、プロセス ID を取得することさえできません。古い Java バージョンにはトリックがありました。Process の実装には、リフレクションを使用して取得できる int フィールド pid が含まれていました。しかし、これはバージョン 1.6 で変更されました。

于 2012-07-11T03:47:29.267 に答える