2014-06-20 2 views
-1

Pojo를 anothet 웹 앱 B로 보내는 Java 웹 앱 A가 있습니다. B가 다운 된 경우 Pojos를 A에서 B로 보내는 것을 다시 시도하는 메커니즘을 만들고 싶습니다. B의 api가 A에 구성된 방식은 A의 클래스 경로에있는 B의 항아리가있는 Spring을 통해 이루어집니다. 나는 그것을 찔렀다. 그러나 재 시도는 작용하지 않고있다. 내가 올바른 방향으로 가고 있는지 누가 알 수 있습니까?웹 서비스 재시도 Java

여기서 잘못된 점은 내 코드가 처음 실행 된 다음 올바르게 예외가 발생한다는 것입니다. catch 블록에서 예외가 발견되었습니다. catch 블록은 callB()를 다시 호출합니다. callB()는 예외를 다시 발생 시키지만, 재 시도 코드는 소스 파일이 아닌 예외 처리 코드로 들어가서 중지됩니다.

EDIT : jcabi-aspect는 Gradle에서 지원되지 않기 때문에 사용할 수 없습니다.

public Object getB(Object request){ 

    if (bClient != null) { 
     int retryCount = 0; 
     try { 
     return callB(request); 
     } catch (Exception e) { 

     if (++retryCount > 3) { 
      return null; 
     } 
     return callB(request); 
     } 
    } 

    return null; 
    } 

     private Object callB(Object request){ 
     return bClient.callServiceB(request); 
     } 
+0

"작동하지 않습니다"는 유효한 문제 설명이 아닙니다. 실제 세부 사항 게시. – Gimby

+0

WS 프로그래밍과 관련된 코드가 없습니다. –

+0

가능한 [자바 웹 서비스에 대한 재시도 호출을위한 자바 클라이언트 코드 작성 방법] (http://stackoverflow.com/questions/12286941/how-to-write-java-client-code-for-retry-call-to) -java-webservice) – robermann

답변

0

당신은, 그것이 성공을 반복이 때까지 뭔가 에 코드를 원하는 루프로 제어 로직을 작성하는 것을 고려한다. 코드를 포기하기 전에 재 시도 횟수를 쉽게 변경할 수 있습니다.