java - 在Java bean中创建一个进程,获取输出并返回网页

标签 java jsf jakarta-ee javabeans

假设我有一个名为“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>

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

最佳答案

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

关于java - 在Java bean中创建一个进程,获取输出并返回网页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14489624/

相关文章:

java - AlertDialog按钮区域背景颜色Android

JSF 复合组件目标操作在 c :forEach Tag 内失败

java - 如何让 subview 在每次渲染时创建一个新 View

java - PF Wizard 不进行下一步吗?

java - BeanProcessor 部分工作

java - 如何在 Web 服务中使用 Moxy XPath 带注释的 bean?

jsf - 使用 RichFaces 上传文件

java - 我可以使用 Android 的测试框架测试状态栏通知吗?

java - 编写 ico 文件 java

java - 以编程方式获取惰性 JPA 字段