2013-01-31 4 views
0

원격 프로 시저 호출을 만들었습니다. Server-Side는 Webservices에 연결하여 정보를 얻고 Client-Side로 전달합니다. 이것은 클라이언트 측 코드입니다.GWT RPC 호출 onFailure

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

지금 난 다음 ...

서버가 WebService에 도달 할 수

가하는 WebServiceException가 발생 할 싶어요. 그런 일이 생기면 GUI의 내 버튼 중 하나에 "오프라인"을 입력하고 싶습니다. 하지만 버튼을 말해야합니다. 하드 코드 된 수 없습니다, 어떤 "차선"Webservice 실패한 따라 달라집니다.

  1. 나는 예외
  2. 나는 서비스가 실패한 차선에서 "onFailure"part의를 말할 필요가
  3. 을 잡을 필요가있다. 어떻게 든 statusFor() - 매개 변수를 그 부분에 전달할 수 있습니까?
+0

오류가 발생하는 이유는 무엇입니까? –

+0

Y, 서비스에 연결할 수없는 경우 – Laura

+0

순전히 예외 처리 .. –

답변

0

왜 포장하여 LaneInformation 일반적인 응답 객체와 : 그 무언가가 서버 측에서 잘못된

public class RemoteResult<T> 
{ 
    T payload; 
    String errorCode; 
} 

을 예를 알리기 위해 예외/그 응답에 오류 코드를 추가하지

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 */ } 
} 

는 서버가 다른 서비스에 연결할 수 없을 때 당신은, 당신은 잘 클라이언트가 통신 할 서버 측에서 예외를 throw하지 않아야 결론적으로, 그것은 (재) 던져 아니다 예전의 ception :-)

onFailure() 방법은 주로 RPC 통신에 문제가있는 경우를위한 것입니다.

건배,

0

이러한 경우를 처리 할 방법이 없습니다. 서버가 웹 서비스에 연결할 수없는 동안 서버 측에서 사용자 정의 예외를 throw 할 수 있습니다. 다음 그것은 올 것이다 onFailure 블록. 또는 응답 변수에 메시지 문자열을 반환 할 수 있습니다. 여기 응답 변수는 LaneInformation bean을 사용하고 있습니다. 그래서 새 변수를 result처럼 가져 와서 요구 사항에 따라 메시지를 설정하십시오.

OnFailure 예외가 발생하거나 RPC 호출에서 잘못된 것이 발생하는 경우에만 발생합니다.