我正在创建一个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放入另一个类,并且表现出相同的行为。

最佳答案

确保您正在从进程中读取stdout和stderr。

08-24 19:41