Pregunta

¿Alguien sabe cómo monitorear los procesos del lado del servidor de larga ejecución en GWT, aparte de sondear el servidor? Necesitamos realizar un proceso de I / O enlazado a E / S que requiera mucho tiempo y mucho tiempo, y sería bueno mostrar el progreso de este proceso en el navegador.

¿Fue útil?

Solución

Esto es bastante fácil de manejar en GWT.

El proceso de larga duración se inicia con una llamada de GWT RPC, en cuyo caso tiene su punto de entrada, o no, en cuyo caso debe comenzar esto manualmente.

Recuerde que las llamadas GWT RPC son asíncronas, por lo que no es necesario que regresen de inmediato. Necesita una llamada RPC como checkStatus () . Así que puedes hacer cosas como:

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

y en su servicio RPC:

void checkStatus(AsyncCallback<JobStatus> callback);

Su servidor puede tardar el tiempo que desee (dentro de lo razonable) en regresar de checkStatus (). Puede volver porque el trabajo está terminado o solo con una actualización del estado del trabajo. Lo anterior continuará en bucle hasta que se establezca el indicador de estado de trabajo realizado.

Otros consejos

Creo que depende de su proceso, pero si va a hacer algo como Data Streaming, puede usar la técnica Server Push (Or Comet). GWT admite la implementación de Comet. google GWT + Comet, o GWT + COMET + Tomcat, leí sobre comet y gwt en " Aplicaciones de Google Web Toolkit " Libro (gwtapps.com).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top