假设我有一个名为"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>
我的问题是:我如何使用这些技术来满足我的高层次要求?当然,代码示例肯定会对我有所帮助。
如果你正在寻找反向ajax类型的响应。你可以使用PRIMEFACES PUSH reverse ajax Technology。这是链接。普利普普