【发布时间】:2018-04-08 00:31:24
【问题描述】:
问题: 我想在 spring boot 项目中从 webservice 执行 java jar 文件。并想对其进行监控。
问题:我能够执行此过程,但问题是该过程没有进一步处理。
我想知道为什么这个进程正在等待以及为什么它没有被处理。我如何监控它的进度。
它在以下条件下得到处理:
- 一旦我停止了 spring boot 项目或 tomcat。
- 如果我删除
process.waitFor();,它就会得到处理
我尝试了this的解决方案,即从另一个线程执行进程。
我的网络服务调用
@RequestMapping(value="/startAnalysis", method=RequestMethod.POST)
public String startAnalysis() {
List<String> cmd = new ArrayList<>();
cmd.add("java");
cmd.add("-jar");
cmd.add("test.jar");
try {
//Process p = Runtime.getRuntime().exec(cmd.toArray(new String[0]));
//ProcMon procMon = new ProcMon(cmd);
//Thread t = new Thread(procMon);
//t.setName("procMon");
//t.start();
ProcessBuilder processBuilder = new ProcessBuilder(cmd);
Process process = processBuilder.start();
process.waitFor();
} catch (Exception e) {
e.printStackTrace();
}
return "success";
}
提前致谢。
【问题讨论】:
-
当我开始进程时,读取该进程的输入流是否重要?我注意到如果我不读它,进程会等待一些东西
-
您是否尝试过在服务器外部从命令行运行相同的 jar 可执行文件?那么它会终止吗?
标签: java spring web-services