Rozwiązywanie problemów związanych z błędami w działaniu zasad JavaCallout w czasie działania

Wyświetlasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X.
info

ExecutionError

Kod błędu

steps.javacallout.ExecutionError

Treść odpowiedzi na błąd

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

Przyczyna

Ten błąd występuje, gdy kod Java zgłasza wyjątek lub zwraca wartość null podczas wykonywania zasady JavaCallout.

Diagnostyka

  1. Rozpocznij sesję śledzenia, aby zarejestrować błąd i określić, która zasada JavaCallout nie działa.

  2. Sprawdź zasady JavaCallout i używany zasób. W przykładzie powyżej zasada JavaCallout używa zasobu o nazwie hello.jar, jak pokazano poniżej:

    <JavaCallout name="hello-java">
       <ClassName>com.apigeesample.HelloJava</ClassName>
       <ResourceURL>java://hello.jar</ResourceURL>
    </JavaCallout>
    
    
  3. Przechwyć i zapisz wyjątek Java w zmiennej przepływu, modyfikując kod źródłowy zgodnie z opisem w sekcji Obsługa błędów w wywołaniu Java.

  4. Skompiluj i zastąp odpowiedni zasób (plik JAR) zaktualizowanym artefaktem Java.

  5. Wdróż proxy interfejsu API jako nową wersję i wywołaj interfejs API.

  6. Rozpocznij kolejną sesję śledzenia.

  7. Zwróć uwagę, że w zmiennej JAVA_STACKTRACE dostępny jest zrzut stosu. Zrzut stosu zawiera rzeczywisty wyjątek oraz plik źródłowy Java i numer wiersza, w którym zgłaszany jest błąd.

  8. Wykorzystaj te informacje, aby rozwiązać problem w kodzie Java.

  9. W tym przykładzie zasady JavaCallout nie zostały wykonane z powodu wyjątku ArithmeticException (dzielenie przez zero) w pliku JavaError.java w wierszu 25.

Rozdzielczość

  1. W zależności od zgłoszonego wyjątku rozwiąż problem w odpowiednich plikach źródłowych Javy. a. W przykładzie powyżej problem był spowodowany błędem arytmetycznym (dzielenie przez zero). Otwórz konkretny plik źródłowy i wiersz wskazany przez zrzut stosu.

    b. Ponieważ nie można dzielić przez zero, aby rozwiązać problem, usuń cały blok else zawierający wadliwą linię kodu.

  2. Zastąp odpowiedni plik JAR zawierający zmodyfikowane pliki na odpowiednim poziomie (proxy interfejsu API, środowisko lub organizacja), w którym wcześniej się znajdował.

  3. Zapisz i wdróż proxy interfejsu API jako nową wersję.