Frage

Wer weiß, wie lang laufende serverseitigen Prozesse in GWT, andere als die Abfrage des Servers zu überwachen? Wir brauchen etwas zeitaufwendig, aus mehreren Schritten zu tun, I / O-gebundene Verarbeitung auf dem Server, und es wäre schön, den Fortschritt dieser Verarbeitung im Browser angezeigt werden.

War es hilfreich?

Lösung

Das ist ziemlich einfach, in GWT zu behandeln.

Der lang andauernder Prozess wird entweder durch einen GWT RPC-Aufruf ausgelöst, in dem Fall, dass Sie Ihren Eintrittspunkt haben, oder es ist nicht, in diesem Fall müssen Sie dies manuell starten.

Beachten Sie, dass GWT RPC-Aufrufe asynchron sind, damit sie nicht sofort zurückkehren müssen. Sie benötigen einen RPC-Aufruf wie checkStatus(). So was Sie tun können Dinge wie:

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
    }
});

und in der RPC-Dienst:

void checkStatus(AsyncCallback<JobStatus> callback);

Ihr Server kann so lange dauern, wie es (innerhalb Grund) mag von check zurückzukehren (). Es kann zurückkehren, weil die Arbeit erledigt ist oder einfach nur mit einem Job-Status zu aktualisieren. Die oben wird fortgesetzt, bis der Job-Status Fertig-Flag Looping gesetzt.

Andere Tipps

Ich denke, es auf Ihrem Prozess hängt aber wenn Sie so etwas wie Daten-Streaming tun, werden Sie Server Push (Oder Comet) technic.GWT unterstützt Comet Implementierung verwenden können. Google GWT + Comet oder GWT + COMET + Tomcat, las ich über Kometen und gwt in "Google Web Toolkit-Anwendungen" Book (gwtapps.com).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top