Exception GWT RPC调用失败
我创建了一个远程过程调用。服务器端连接到Webservices,以获取信息,并将信息交给客户端。这是客户端代码Exception GWT RPC调用失败,exception,gwt,parameters,rpc,Exception,Gwt,Parameters,Rpc,我创建了一个远程过程调用。服务器端连接到Webservices,以获取信息,并将信息交给客户端。这是客户端代码 public void statusFor(GwtLaneServiceAsync laneProxy){ AsyncCallback<LaneInformation> callback = new AsyncCallback<LaneInformation>() { @Override public void
public void statusFor(GwtLaneServiceAsync laneProxy){
AsyncCallback<LaneInformation> callback = new AsyncCallback<LaneInformation>()
{
@Override
public void onFailure(Throwable caught)
{
}
@Override
public void onSuccess(LaneInformation information)
{
doStatusForSuccess(information);
}
};
for (Lane lane : this.mainmenu.getSlidePanel().getLaneMenu().getProperLanes().values())
{
if (lane.isChecked().booleanValue())
laneProxy.statusFor("admin", "password", true, lane.getId(), callback);
else
laneProxy.statusFor("admin", "password", false, lane.getId(), callback);
this.laneIndex++;
}
}
public void statusFor(GwtLaneServiceAsync laneProxy){
AsyncCallback callback=新的AsyncCallback()
{
@凌驾
失败时的公共无效(可丢弃)
{
}
@凌驾
成功时公开作废(LaneInformation信息)
{
成功剂量(信息);
}
};
对于(车道:this.main菜单.getSlidePanel().getLaneMenu().GetPropertLanes().values())
{
if(lane.isChecked().booleanValue())
laneProxy.statusFor(“admin”、“password”、true、lane.getId()、回调);
其他的
laneProxy.statusFor(“admin”,“password”,false,lane.getId(),callback);
这个.laneIndex++;
}
}
现在我想做以下的
当服务器无法访问Webservice时,会引发WebServiceException。如果发生这种情况,我想在GUI的一个按钮上键入“Offline”。但我需要告诉你是按哪个按钮的。它不能硬编码,因为它取决于Web服务失败的“通道”
为什么不将您的
laneiformation
包装在通用响应对象中,并将异常/错误代码添加到该响应中,以表明服务器端出现了问题,例如:
public class RemoteResult<T>
{
T payload;
String errorCode;
}
公共类RemoteResult
{
T有效载荷;
字符串错误码;
}
及
公共抽象类AbstractAsyncCallBack实现AsyncCallback
{
成功时公共无效(RemoteResult rr)
{
如果(rr.getErrorCode()!=null){failure(rr.getErrorCode());}
else{success(rr.getPayload());}
}
公开摘要无效成功(T有效载荷);
公共无效失败(字符串错误代码){/*默认情况下忽略*/}
}
总之,当服务器无法连接到其他服务时,您不应该在服务器端抛出异常,您应该与客户端进行良好的通信,而不是(重新)抛出异常:-)
onFailure()
干杯,没有办法处理这种情况。当服务器无法访问Web服务时,您可以从服务器端抛出任何自定义异常。然后它将出现onFailure
block。或者,您可以在响应变量中返回任何消息字符串。这里是您正在使用的响应变量LaneInformation
bean。所以,在那个里使用新变量,比如result
,并根据您的需求设置消息
OnFailure
只有在RPC调用中发生任何异常或错误时才会出现 当它无法到达纯粹是异常处理的服务时,它是否会进入onfailure。。
public abstract class AbstractAsyncCallBack<T> implements AsyncCallback<RemoteResult<T>>
{
public void onSuccess( RemoteResult<T> rr )
{
if ( rr.getErrrorCode() != null ) { failure( rr.getErrorCode() ); }
else { success( rr.getPayload() ); }
}
public abstract void success( T payload );
public void failure( String errorCode ) { /* Ignore by default */ }
}