ApachesのWebから例を実装しました:http://commons.apache.org/exec/tutorial.html
私が今必要としているのは、重いプロセスからのフィードバックを聞く/受け取ることです。
setStreamHandlerメソッドを使用してプロセス結果を出力する方法を知っていますが、この結果は実行が終了すると表示されます。
ApachesのWebから例を実装しました:http://commons.apache.org/exec/tutorial.html
私が今必要としているのは、重いプロセスからのフィードバックを聞く/受け取ることです。
setStreamHandlerメソッドを使用してプロセス結果を出力する方法を知っていますが、この結果は実行が終了すると表示されます。
PumpStreamHandler
読んでみることをお勧めしますInputStreamPumper
。基本的に、これらのクラスはほぼ正確に必要です。InputStreamPumper.run()
ループを変更するだけです。の代わりにos.write()
、イベントを発生させる必要があります。プロセスの実行中に結果が到着し始めるようにするには、次のように呼び出します。
CommandLine cmdLine = new CommandLine(yourExecutable);
DefaultExecuteResultHandler resultHandler = new DefaultExecuteResultHandler();
Executor executor = new DefaultExecutor();
executor.setStreamHandler(new YourPumpStreamHandler());
executor.execute(cmdLine, resultHandler);
// until waitFor returns, the process is running and events can be generated
int exitValue = resultHandler.waitFor();