Fehlerbehebung bei der Laufzeit von JavaCallout-Richtlinien

Sie sehen die Dokumentation zu Apigee Edge.
Gehen Sie zur Apigee X-Dokumentation.
Weitere Informationen

ExecutionError

Fehlercode

steps.javacallout.ExecutionError

Fehlerantworttext

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

Ursache

Dieser Fehler tritt auf, wenn der Java-Code eine Ausnahme auslöst oder null während der Ausführung einer JavaCallout-Richtlinie zurückgibt.

Diagnose

  1. Starten Sie eine Trace-Sitzung, um den Fehler zu erfassen und festzustellen, welche JavaCallout-Richtlinie fehlgeschlagen ist.

  2. Sehen Sie sich die JavaCallout-Richtlinie und die verwendete Ressource an. Im obigen Beispiel verwendet die JavaCallout-Richtlinie eine Ressource namens hello.jar, wie unten dargestellt:

    <JavaCallout name="hello-java">
       <ClassName>com.apigeesample.HelloJava</ClassName>
       <ResourceURL>java://hello.jar</ResourceURL>
    </JavaCallout>
    
    
  3. Erfassen und speichern Sie die Java-Ausnahme in einer Ablaufvariablen, indem Sie den Quellcode ändern, wie unter Fehler in einem Java-Callout verarbeiten beschrieben.

  4. Kompilieren Sie die betroffene Ressource (JAR-Datei) und ersetzen Sie sie durch das aktualisierte Java-Artefakt.

  5. Sie stellen den API-Proxy als neue Überarbeitung bereit und führen den API-Aufruf aus.

  6. Starten Sie eine weitere Trace-Sitzung.

  7. In der Variablen JAVA_STACKTRACE ist ein Stacktrace verfügbar. Der Stacktrace enthält die tatsächliche Ausnahme und die Java-Quelldatei und die Zeilennummer für den Fehler.

  8. Verwenden Sie diese Informationen, um das Problem im Java-Code zu beheben.

  9. In diesem Beispiel ist die JavaCallout-Richtlinie aufgrund einer ArithmeticException (Teilung durch null) in der Datei JavaError.java in Zeile 25 fehlgeschlagen.

Lösung

  1. Beheben Sie je nach ausgelöster Ausnahme das Problem in den entsprechenden Java-Quelldateien. a. Im obigen Beispiel wurde das Problem durch einen arithmetischen Fehler verursacht (Teilung durch null). Gehen Sie zur angegebenen Quelldatei und zur Zeilennummer, die vom Stacktrace angegeben wird.

    b. Da die Division durch null nicht möglich ist, entfernen Sie den vollständigen Block, der die fehlerhafte Codezeile enthält, um das Problem zu lösen.

  2. Ersetzen Sie die relevante JAR-Datei mit den geänderten Dateien auf der entsprechenden Ebene (API-Proxy, Umgebung oder Organisation), in der sie zuvor vorhanden war.

  3. Speichern und stellen Sie den API-Proxy als neue Überarbeitung bereit.