3

Web ページからの要求を処理するために使用される「Mainbean」という名前の Java Bean があるとします。

この Bean でプロセス「proc」を作成し、proc の出力を取得して、非同期で Web ページに返し、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>

私の質問は次のとおりです。これらのテクノロジを使用して、高レベルの要件を満たすにはどうすればよいですか? もちろん、コード例は間違いなく役に立ちます。

4

1 に答える 1

1

リバース ajax のような応答を探している場合。PRIMEFACES PUSH リバース ajax テクノロジを使用できます。ここにリンクがあります。プリムプッシュ

于 2013-03-28T09:14:49.023 に答える