Gwt 尝试多次相同的RPC调用的最佳方法是什么

Gwt 尝试多次相同的RPC调用的最佳方法是什么,gwt,rpc,Gwt,Rpc,当RPC调用失败时,尝试多次相同的RPC调用的最佳方法是什么 举个例子:这里有一个例子,比如如果RPC由于网络连接而失败,它将捕获到onFailure(Throwable-catch)。 现在,它应该再次调用相同的RPC来检查网络连接。最大尝试次数应为3次,然后向用户显示消息,如“网络未建立” 我怎样才能做到呢 一些想法,比如在失败时调用相同的rpc调用,但这里的请求变得不同。但是我希望相同的请求有三个请求,这不是一个好方法,我不知道是否有任何好的解决方案 提前感谢。在异步回调实现中使用计数器。

当RPC调用失败时,尝试多次相同的RPC调用的最佳方法是什么

举个例子:这里有一个例子,比如如果RPC由于网络连接而失败,它将捕获到onFailure(Throwable-catch)。 现在,它应该再次调用相同的RPC来检查网络连接。最大尝试次数应为3次,然后向用户显示消息,如“网络未建立” 我怎样才能做到呢

一些想法,比如在失败时调用相同的rpc调用,但这里的请求变得不同。但是我希望相同的请求有三个请求,这不是一个好方法,我不知道是否有任何好的解决方案


提前感谢。

异步回调
实现中使用计数器。我建议在再次请求服务器之前使用计时器

此代码应适用于:

final greetingService异步greetingService=GWT.create(greetingService.class);
最后一个字符串textToServer=“foo”;
greetingService.greetServer(textToServer,新的AsyncCallback(){
int=0;
成功时的公共void(字符串结果){
//做点什么
}
失败时的公共无效(可丢弃){
如果(尝试+++<3){
//可选项将新调用包含在计时器中,以便在再次请求服务器之前等待一段时间
新计时器(){
公开募捐{
greetServer(textToServer,this);
}
}.附表(4000);
}
}
});

@Jens从谷歌集团给出了这个答案

您可以通过使用自定义RpcRequestBuilder透明地处理给定GWT-RPC接口的所有请求。此自定义RpcRequestBuilder将进行3次请求尝试,如果所有3次都失败,则调用onFailure()方法

MyRemoteServiceAsync服务=GWT.create(MyRemoteService.class); ((ServiceDefTarget)服务).setRpcRequestBuilder(新的RetryThreeTimesRequestBuilder())


如果多个应用程序组件可能对该信息感兴趣,自定义RequestBuilder还可以在eventBus上触发“NetworkFailureEvent”。例如,您可以在整个应用程序上覆盖一个黑色屏幕,并定期尝试向服务器发送Ping请求,直到网络恢复联机。还有在线HTML5属性,您可以检查,但它不是100%可靠()

谢谢,它可以+1工作,我从Google Group获得了其他实现它的好方法。所以我也同意这个答案。