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
Uruchom sesję śledzenia, aby zarejestrować błąd i określić, która reguła JavaCallout się nie powiodła.
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>
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.
Zkompiluj i zastąp zasób, którego dotyczy problem (plik JAR), zaktualizowanym artefaktem Java.
Wdróż proxy interfejsu API jako nową wersję i wywołaj interfejs API.
Rozpocznij kolejną sesję śledzenia.
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.Skorzystaj z tych informacji, aby rozwiązać problem w kodzie Java.
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ść
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.
Zastąp odpowiedni plik JAR zawierający zmodyfikowane pliki na odpowiednim poziomie (interfejs API, środowisko lub organizacja), gdzie znajdował się wcześniej.
Zapisz i wdróż proxy interfejsu API jako nową wersję.