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, jeśli kod Java zgłasza wyjątek lub zwraca null podczas wykonywania JavaCallout policy.

Diagnostyka

  1. Uruchom sesję śledzenia, aby zarejestrować błąd i określić, która reguła JavaCallout się nie powiodła.

  2. Sprawdź zasadę JavaCallout i używany zasób. 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ć wyjątek Java i zapisz go w zmiennej przepływu, modyfikując kod źródłowy zgodnie z opisem w sekcji Obsługa błędów w objaśnieniu Java.

  4. Zkompiluj i zastąp zasób, którego dotyczy problem (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 ślad pakietu jest dostępny w zmiennej JAVA_STACKTRACE. Ślad stosu zawiera informacje o wyjątkach 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 Java.

  9. W tym przykładzie zasada JavaCallout nie zadziałała z powodu wyjątku ArithmeticException (dziel przez zero) w pliku JavaError.java w wierszu 25.

Rozdzielczość

  1. W zależności od wyrzuconego wyjątku rozwiąż problem w odpowiednich plikach źródłowych Javy. W powyższym przykładzie problem został spowodowany błędem arytmetycznym (dzielenie przez 0). Przejdź do konkretnego pliku źródłowego i wiersza wskazanego przez ślad stosu.

    b. Ponieważ nie można dzielić przez 0, należy usunąć cały blok inny zawierający nieprawidłowy wiersz kodu w celu rozwiązania problemu.

  2. Zastąp odpowiedni plik JAR zawierający zmodyfikowane pliki na odpowiednim poziomie (interfejs API, środowisko lub organizacja), gdzie znajdował się wcześniej.

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