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

Przeglądasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X.
Informacje

ExecutionError

Kod błędu

steps.javacallout.ExecutionError

Treść odpowiedzi o błędzie

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

Przyczyna

Ten błąd występuje, jeśli kod Java zwróci wyjątek lub zwróci wartość null podczas wykonywania zasady JavaCallout.

Diagnostyka

  1. Rozpocznij sesję śledzenia, aby przechwycić błąd i określić, które zasady JavaCallout nie działają.

  2. Sprawdź zasadę JavaCallout i wykorzystany zasób. W powyższym przykładzie zasada JavaCallout korzysta z 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 przez modyfikację kodu źródłowego w sposób opisany w artykule Obsługa błędów w objaśnieniu w języku Java.

  4. Skompiluj i zastąp zasób, którego dotyczy problem (plik JAR), zaktualizowanym artefaktem Java.

  5. Wdróż serwer proxy interfejsu API jako nową wersję i wykonaj wywołanie interfejsu API.

  6. Rozpocznij kolejną sesję śledzenia.

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

  8. Skorzystaj z tych informacji, by rozwiązać problem w kodzie Java.

  9. W tym przykładzie działanie zasada JavaCallout nie powiodło się z powodu wystąpienia wyjątku ArithmeticWyjątek (podziału przez 0) 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 powyższym przykładzie problem został spowodowany błędem arytmetycznym (podziałem przez 0). Przejdź do konkretnego pliku źródłowego i numeru wiersza wskazanego w zrzucie stosu.

    b. Nie możesz dzielić przez 0, więc aby rozwiązać ten problem, usuń cały blok other zawierający błędny wiersz kodu.

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

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