質問

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

役に立ちましたか?

解決

これはGWTで非常に簡単に処理できます。

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

GWT RPC呼び出しは非同期であるため、すぐに戻る必要はありません。 checkStatus()のようなRPC呼び出しが必要です。次のようなことができます:

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()から戻るのに(理由の範囲内で)好きなだけ時間がかかります。ジョブが完了したため、またはジョブのステータスが更新されただけで戻ることがあります。上記は、ジョブステータス完了フラグが設定されるまでループを続けます。

他のヒント

プロセスに依存すると思いますが、データストリーミングなどを行う場合は、サーバープッシュ(またはComet)technic.GWTを使用してCometの実装をサポートできます。 google GWT + CometまたはGWT + COMET + Tomcat、iは、「Google Web Toolkitアプリケーション」の彗星とgwtについて読みます。 Book(gwtapps.com)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top