在Java bean中创建一个进程,获取输出并返回到Web页面

问题描述 投票:3回答:1

假设我有一个名为“Mainbean”的java bean,它用于处理来自网页的请求。

我想在这个bean中创建一个进程“proc”,并获取proc的输出,将它们异步返回到网页,并在JSF的inputTextArea中显示它们。

由于“proc”可能有如此多的输出行,我想逐行和实时地返回它们,但是在过程结束后不会显示它们。

我使用以下代码创建进程并尝试获取输出。但似乎进程无法正常退出,导致退出值始终为-1。

builder = new ProcessBuilder("java", "-Xms1024m","-Xmx1024m","-Xss65536k","-cp ",spaceMaker,"SmartBridge", solution," ",this.specFile,"1000000");
proc = builder.start();
InputStream is = proc.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
returnValue  = proc.waitFor();

while ((line = br.readLine()) != null) {
    // Outputs your process execution
    System.out.println(line);
    this.metaOutput = this.metaOutput.concat(line);
    exit = proc.exitValue();
    if (exit == 0) {
        // Process finished
        break;
    }
    return output;
}

在JSF页面中,我使用以下代码:

<h:form>
    <h:inputTextarea id="processOutput" value="#{mainBean.metaOutput}" cols="80" rows="20">
        <f:ajax render="processOutput"/>
    </h:inputTextarea>
 </h:form>

我的问题是:我如何使用这些技术来满足我在高级别的要求?当然,代码示例肯定会对我有所帮助。

java jsf java-ee javabeans
1个回答
1
投票

如果您正在寻找Reverse ajax的回应。您可以使用PRIMEFACES PUSH反向ajax技术。链接在这里。 PrimPush

© www.soinside.com 2019 - 2024. All rights reserved.