Question

Quelqu'un sait-il comment surveiller les processus côté serveur exécutés depuis longtemps dans GWT, autres que l'interrogation du serveur? Nous devons effectuer sur le serveur des traitements fastidieux en plusieurs étapes et liés aux E / S. Il serait bien d’afficher la progression de ce traitement dans le navigateur.

Était-ce utile?

La solution

C’est assez facile à gérer dans GWT.

Le processus de longue durée est soit déclenché par un appel RPC GWT, auquel cas vous avez votre point d’entrée, soit il ne l’est pas, auquel cas vous devez le démarrer manuellement.

N'oubliez pas que les appels RPC GWT sont asynchrones, ils n'ont donc pas besoin d'être renvoyés immédiatement. Vous avez besoin d'un appel RPC tel que checkStatus () . Pour que vous puissiez faire des choses comme:

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

et dans votre service RPC:

void checkStatus(AsyncCallback<JobStatus> callback);

Votre serveur peut prendre autant de temps qu'il le souhaite (dans des limites raisonnables) pour revenir de checkStatus (). Il peut revenir parce que le travail est terminé ou simplement avec une mise à jour du statut du travail. La procédure décrite ci-dessus continue de tourner en boucle jusqu'à ce que l'indicateur d'état du travail terminé soit défini.

Autres conseils

Je pense que cela dépend de votre processus, mais si vous envisagez de faire quelque chose comme le streaming de données, vous pouvez utiliser la technique serveur Push (ou Comet). GWT prend en charge l'implémentation de Comet. google GWT + Comet ou GWT + COMET + Tomcat, je me suis renseigné sur les comètes et gwt dans "Google Web Toolkit Applications". Livre (gwtapps.com).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top