質問
サーバーをポーリングする以外に、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)。
所属していません StackOverflow