我继承了 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 &
这显然会创建一个孤立的进程,但至少应用程序确实会继续执行。