Risoluzione dei problemi relativi agli errori di runtime dei criteri JavaCallout

Stai visualizzando la documentazione di Apigee e Apigee hybrid.
Visualizza la documentazione di Apigee Edge.

ExecutionError

Codice di errore

steps.javacallout.ExecutionError

Corpo della risposta di errore

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

Causa

Questo errore si verifica se il codice Java genera un'eccezione o restituisce null durante l'esecuzione di un JavaCallout policy.

Diagnosi

  1. Avvia una sessione di traccia per acquisire l'errore e identificare quale policy JavaCallout non è riuscita.

  2. Esamina la policy JavaCallout e la risorsa utilizzata. Nell'esempio precedente, la norma JavaCallout utilizza una risorsa denominata hello.jar, come mostrato di seguito:

    <JavaCallout name="hello-java">
       <ClassName>com.apigeesample.HelloJava</ClassName>
       <ResourceURL>java://hello.jar</ResourceURL>
    </JavaCallout>
    
    
  3. Acquisisci e memorizza l'eccezione Java in una variabile di flusso modificando il codice sorgente, come descritto in Gestione degli errori nelle norme JavaCallout.

  4. Compila e sostituisci la risorsa interessata (file JAR) con l'artefatto Java aggiornato.

  5. Esegui il deployment del proxy API come nuova revisione ed esegui la chiamata API.

  6. Avvia un'altra sessione di traccia.

  7. Tieni presente che è disponibile una analisi dello stack nella variabile JAVA_STACKTRACE. La analisi dello stack elenca l'eccezione effettiva, il file di origine Java e il numero di riga in cui viene generato l'errore.

  8. Utilizza queste informazioni per risolvere il problema nel codice Java.

  9. In questo esempio, la norma JavaCallout non è riuscita a causa di un'ArithmeticException (divisione per zero) nel file JavaError.java alla riga 25.

Risoluzione

  1. A seconda dell'eccezione generata, correggi il problema nei file sorgente Java pertinenti. a. Nell'esempio mostrato sopra, il problema è stato causato da un errore aritmetico (divisione per zero). Vai al file di origine specifico e al numero di riga indicati dalla analisi dello stack.

    b. Poiché non è possibile eseguire la divisione per zero, rimuovi l'intero blocco else contenente la riga di codice errata per risolvere il problema.

  2. Sostituisci il file JAR pertinente contenente i file modificati al livello appropriato (proxy API, ambiente o organizzazione), dove esisteva in precedenza.

  3. Salva ed esegui il deployment del proxy API come nuova revisione.