1

サーバーをポーリングする以外に、GWTで長時間実行されているサーバー側のプロセスを監視する方法を知っている人はいますか? サーバー上で、時間のかかる複数ステップの I/O バウンド処理を実行する必要があります。この処理の進行状況をブラウザーに表示すると便利です。

4

2 に答える 2

3

これは、GWT で扱うのはかなり簡単です。

長時間実行されるプロセスは、エントリ ポイントがある場合は GWT RPC 呼び出しによってトリガーされます。エントリ ポイントがない場合は、手動で開始する必要があります。

GWT RPC 呼び出しは非同期であるため、すぐに戻る必要がないことに注意してください。のような RPC 呼び出しが必要ですcheckStatus()。したがって、次のようなことができます。

public class JobStatus {
  private boolean done;
  // other info
  // ...
}

public class JobStatusCallback<JobStatus> extends AsyncCallback {
    public final void onSuccess(JobStatus result) {
       if (result.isDone()) {
            done();
        } else {
            checkAgain();
        }
    }

    public final void onFailure(Throwable caught) {
       error(caught);
       checkAgain();
    }

    public void done() { // override
    }

    public void checkAgain() {
        service.checkStatus(this);
    }

    public void error(Thorwable t) { // override
    }
});

そしてあなたのRPCサービスで:

void checkStatus(AsyncCallback<JobStatus> callback);

サーバーは、checkStatus() から戻るのに (妥当な範囲内で) 好きなだけ時間がかかる場合があります。仕事が完了したため、または単に仕事のステータスが更新されたために戻る可能性があります。上記は、ジョブステータス完了フラグが設定されるまでループし続けます。

于 2009-01-03T23:16:16.863 に答える
0

プロセスにもよると思いますが、データ ストリーミングのようなことを行う場合は、サーバー プッシュ (またはコメット) テクニックを使用できます。GWT はコメットの実装をサポートしています。Google GWT+Comet、または GWT+COMET+Tomcat については、"Google Web Toolkit Applications" Book(gwtapps.com) で comet と gwt について読みました。

于 2009-01-03T19:53:39.987 に答える