Pregunta

¿Hay alguna forma de cancelar/abortar solicitudes de fábrica? Usando GWT 2.3

¿Fue útil?

Solución

Otra opción sería crear una alternativa com.google.web.bindery.requestfactory.shared.RequestTransport escriba, en lugar de usar DefaultRequestTransport. La desventaja de esto (y la ventaja del enfoque de Bobv) es que no sabrá cuándo en la solicitud en el servidor que lo mate, por lo que es posible que ya haya ejecutado algunos de sus métodos: no recibirá comentarios de ninguno de ellos, Simplemente detendrá la solicitud saliente.

Sospecho que esta es la razón por la cual RF ya no tiene esta característica, como lo hace RPC. Sin embargo, considere incluso el caso de RPC o SolicBuilder: ¿cómo notifican al servidor que han cambiado de opinión y que no ejecutaron la solicitud? Entiendo que no lo hacen, la única forma en que se apagan temprano es cuando intentan leer/escribir en la respuesta y obtener un error TCP, ya que la conexión se ha cerrado. (Es posible que me equivoco, y que otro hilo vigile el estado de la conexión y las llamadas TCP thread.stop(Throwable), pero la parada ha sido desaprobado por un buen rato.)

Un pensamiento sería enviar un mensaje al servidor, diciéndole que mate otras solicitudes de la misma sesión; sin embargo, esto requeriría una participación activa en el código de su servidor, posiblemente hecho genérico en un ServiceLayerDecorator subtipo, probablemente en al menos invoke, loadDomainObject(s), y getSetter, entre otros. Sin embargo, esto está muy claramente involucrado para pedirle a GWT que lo construya para usted ...

Otros consejos

No hay forma de cancelar una solicitud después del fire() se ha llamado al método. Considere construir una costumbre Receiver clase base como la siguiente:

public abstract class CancelableReceiver<V> extends Receiver<V> {
  private boolean canceled;

  public void cancel() {
    canceled = true;
  }

  @Override
  public final void onSuccess(V response) {
    if (!canceled) {
      doOnSuccess(response);
    }
  }

  protected abstract void doOnSuccess(V response);
}

El patrón se puede repetir para otros métodos en el Receiver escribe.

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