0

メッセージをリッスンし、オンデマンドでプロセスを分岐できる Activiti コントローラーを作成しています。

私はJavaを使用しようとしています:

Process p = Runtime.getRuntime().exec("java -jar ...");

通常のJava実行可能jarを実行すると問題なく動作しますが、エクスポートされたActivitiプロジェクトを実行する場合、Activitiコントローラーが完了するまで呼び出しがハングするようです。

コントローラ:

while(1){
    print "listening"
    recv message
    print "executing"
    exec process
    print "done"
}

メッセージが受信されると、ループの先頭に戻ることを含め、すべての印刷物が表示されます。しかし、アプリケーションを強制的に閉じるか、while ループを完全に削除するまで、プロセスは実際には実行されません。

コントローラー コードが完了すると、コマンド ラインで Activiti jar 全体が完了していることを確認できます。

** これは単に出力を保持して最後に表示するだけではありません。これは、ワークフローが Activiti を監視できる他のサービスにメッセージを渡すためです。

** 代わりに runnable と thread を使用して、exec を別のクラスに配置しようとしましたが、同じ動作が見られます。

4

1 に答える 1

1

プロセスからstdoutとstderrを読み取っていることを確認してください。

于 2011-07-19T01:10:43.057 に答える