首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从和监视器执行流程?

从和监视器执行流程?
EN

Stack Overflow用户
提问于 2017-10-26 14:50:22
回答 2查看 1.7K关注 0票数 3

问题:我想在spring项目中从webservice执行java文件。想要监视它。

问题:,我能够执行这个过程,但问题是该进程没有进一步处理。

我想知道为什么这个过程在等待,为什么它不被处理。我怎样才能监控它的进展。

在以下条件下对其进行处理:

  1. 一旦我停止了春季启动项目或tomcat。
  2. 如果我删除process.waitFor();,它就会被处理

我尝试了的解决方案,即从另一个线程执行进程。

我的web服务调用

代码语言:javascript
复制
@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";
}
EN

回答 2

Stack Overflow用户

发布于 2017-10-30 16:26:40

通常,该进程等待调用进程使用它的输出。有时,这只是意味着输出会显示在终端上,但在这种情况下,您可能需要读取输入流,直到它阻塞为止。如果您不知道进程应该如何运行,您可能只想在一个单独的线程中读取process.getInputStream()。在某些状态下,您的进程也可能在等待将某些东西写入process.getOutputStream()。

要么您需要检查jar的文档,要么直接从命令提示符/shell执行它,并查看它的行为。然后,您可以将应用程序更改为读取输出,就像您期望的那样。

在许多应用程序中,输出最容易逐行读取:

代码语言:javascript
复制
final String EXPECTED_OUTPUT = "Hello World";

BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String firstLine = reader.readLine();
if (!firstLine.equals(EXPECTED_OUTPUT)) {
    // handle unexpected situation
}
// maybe handle some more output
// or send something to the process.getOutputStream() in response
// and finally wait for the application to exit when it should be done
process.waitFor();
票数 1
EN

Stack Overflow用户

发布于 2017-11-06 06:09:21

在某些情况下,请找一个详细的理由说明为什么对process.waitFor()的调用根本不会返回,这里

或者,看看您是否可以使用替代版本 of waitFor()方法来提供timeOut值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46957466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档