JavaCallout 정책 런타임 오류 문제해결

현재 Apigee Edge 문서가 표시되고 있습니다.
Apigee X 문서로 이동
정보

ExecutionError

오류 코드

steps.javacallout.ExecutionError

오류 응답 본문

{
  "fault": {
    "faultstring": "Execution returned an error result",
    "detail": {
      "errorcode": "flow.execution.ExecutionReturnedFailure"
    }
  }
}

원인

이 오류는 JavaCallout 정책 실행 중에 자바 코드가 예외를 발생시키거나 null을 반환하는 경우에 발생합니다.

진단

  1. 추적 세션을 시작하여 오류를 포착하고 실패한 JavaCallout 정책을 식별합니다.

  2. JavaCallout 정책 및 사용된 리소스를 검토합니다. 위의 예시에서 JavaCallout 정책은 아래와 같이 hello.jar이라는 리소스를 사용합니다.

    <JavaCallout name="hello-java">
       <ClassName>com.apigeesample.HelloJava</ClassName>
       <ResourceURL>java://hello.jar</ResourceURL>
    </JavaCallout>
    
    
  3. 자바 콜아웃의 오류 처리에 설명된 대로 소스 코드를 수정하여 자바 예외를 흐름 변수에 캡처하고 저장합니다.

  4. 영향을 받는 리소스(JAR 파일)를 업데이트된 자바 아티팩트로 컴파일하고 바꿉니다.

  5. API 프록시를 새 버전으로 배포하고 API 호출을 수행합니다.

  6. 다른 추적 세션을 시작합니다.

  7. 스택 trace는 JAVA_STACKTRACE 변수에서 사용할 수 있습니다. 스택 trace에는 실제 예외와 오류가 발생하는 자바 소스 파일 및 행 번호가 나열됩니다.

  8. 이 정보를 사용하여 자바 코드의 문제를 해결합니다.

  9. 이 예에서는 25번 행의 JavaError.java 파일에 있는 ArithmeticException 예외(0으로 나누기)로 인해 JavaCallout 정책이 실패했습니다.

해상도

  1. 발생한 예외에 따라 관련 자바 소스 파일에서 문제를 해결합니다. a. 위에 표시된 예에서 산술 오류(0으로 나누기)로 인해 문제가 발생했습니다. 스택 추적이 나타내는 특정 소스 파일과 행 번호로 이동합니다.

    b. 0으로 나눌 수 없으므로 문제가 있는 코드 행이 포함된 전체 else 블록을 삭제하여 문제를 해결하세요.

  2. 수정된 파일이 포함된 관련 JAR 파일을 이전에 해당 파일이 존재했던 적절한 수준(API 프록시, 환경 또는 조직)에서 대체합니다.

  3. API 프록시를 저장하고 새 버전으로 배포합니다.