Risoluzione dei problemi relativi agli errori di runtime dei criteri JavaCallout

Stai visualizzando la documentazione di Apigee Edge.
Vai alla documentazione di Apigee X.
info

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 criterio JavaCallout.

Diagnosi

  1. Avvia una sessione di traccia per acquisire l'errore e identificare la norma relativa ai callout Java che non ha superato il test.

  2. Esamina il criterio JavaCallout e la risorsa utilizzata. Nell'esempio riportato sopra, 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 archivia l'eccezione Java in una variabile di flusso modificando il codice sorgente, come descritto in Gestione degli errori in un callout Java.

  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 nella variabile JAVA_STACKTRACE è disponibile un'analisi dello stack. L'analisi dello stack elenca l'eccezione effettiva, il file sorgente 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, il criterio JavaCallout non è riuscito a causa di un'eccezione ArithmeticException (divisione per zero) nella riga 25 del file JavaError.java.

Risoluzione

  1. A seconda dell'eccezione generata, correggi il problema nei file di origine Java pertinenti. a. Nell'esempio mostrato in precedenza, il problema era causato da un errore aritmetico (divisione per zero). Vai al file di origine e al numero di riga specifici indicati dalla traccia dello stack.

    b. Poiché non puoi eseguire la divisione per zero, rimuovi il blocco else completo contenente la riga di codice errata per risolvere il problema.

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

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