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

Przeglądasz dokumentację Apigee Edge.
Przejdź do Dokumentacja Apigee X.
informacje.

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, jeśli kod w Javie zgłosi wyjątek lub zwróci wartość null podczas wykonywania zasady JavaCallout.

Diagnostyka

  1. Rozpocznij sesję śledzenia, aby przechwycić błąd i określić zasadę Javaobjaśnienia, która zakończyła się niepowodzeniem.

  2. Zapoznaj się z zasadami dotyczącymi JavaCallout i wykorzystywanym zasobem. W powyższym przykładzie 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 artykule Przetwarzanie błędów w ramach calloutu Java.

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

  5. Wdrożyć serwer proxy interfejsu API jako nową wersję i wywołać interfejs API.

  6. Rozpocznij kolejną sesję śledzenia.

  7. Zwróć uwagę, że w zmiennej JAVA_STACKTRACE jest dostępny zrzut stosu. Ślad stosu zawiera listę wyjątków oraz plik źródłowy Java i numer wiersza, w którym wystąpił błąd.

  8. Skorzystaj z tych informacji, aby rozwiązać problem w kodzie Javy.

  9. W tym przykładzie zasada JavaCallout nie powiodła się z powodu wyjątku ArithmeticException (dziel 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 został spowodowany błędem arytmetycznym (podziałem przez zero). Otwórz określony plik źródłowy i numer wiersza wskazane w zrzucie stosu.

    b. Nie można dzielić przez 0, dlatego aby rozwiązać problem, należy usunąć cały inny blok zawierający nieprawidłowy wiersz kodu.

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

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