Résoudre les erreurs d'exécution de la règle JavaCallout

Vous consultez la documentation d'Apigee Edge.
Consultez la documentation Apigee X.
en savoir plus

ExecutionError

Code d'erreur

steps.javacallout.ExecutionError

Corps de la réponse d'erreur

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

Cause

Cette erreur se produit lorsque le code Java génère une exception ou renvoie une valeur nulle lors de l'exécution d'une règle JavaCallout.

Diagnostic

  1. Démarrez une session de traçage pour intercepter l'erreur et identifier quelle règle JavaCallout a échoué.

  2. Examinez la règle JavaCallout et la ressource utilisée. Dans l'exemple ci-dessus, la règle JavaCallout utilise une ressource nommée hello.jar, comme illustré ci-dessous :

    <JavaCallout name="hello-java">
       <ClassName>com.apigeesample.HelloJava</ClassName>
       <ResourceURL>java://hello.jar</ResourceURL>
    </JavaCallout>
    
    
  3. Capturez et stockez l'exception Java dans une variable de flux en modifiant le code source, comme décrit dans la section Gérer les erreurs dans une accroche Java.

  4. Compilez et remplacez la ressource affectée (fichier JAR) par l'artefact Java mis à jour.

  5. Déployez le proxy d'API en tant que nouvelle révision et effectuez l'appel d'API.

  6. Démarrez une autre session de traçage.

  7. Notez qu'une trace de pile est disponible dans la variable JAVA_STACKTRACE. La trace de la pile répertorie l'exception réelle et le fichier source Java et le numéro de ligne où l'erreur est générée.

  8. Utilisez ces informations pour résoudre le problème dans le code Java.

  9. Dans cet exemple, la règle JavaCallout a échoué en raison d'une exception ArithmeticException (division par zéro) dans le fichier JavaError.java à la ligne 25.

Résolution

  1. En fonction de l'exception générée, corrigez le problème dans le ou les fichiers sources Java correspondants. a. Dans l'exemple ci-dessus, le problème est dû à une erreur arithmétique (division par zéro). Accédez au fichier source et au numéro de ligne indiqués par la trace de la pile.

    b. Comme vous ne pouvez pas effectuer de division par zéro, supprimez le bloc et tout autre bloc contenant la ligne de code défaillante afin de résoudre le problème.

  2. Replacez le fichier JAR contenant les fichiers modifiés à l'emplacement (proxy, environnement ou organisation de l'API), où il existait auparavant.

  3. Enregistrez et déployez le proxy d'API en tant que nouvelle révision.