Solución de problemas de errores del entorno de ejecución de la política JavaCallout

Estás consultando la documentación de Apigee y Apigee Hybrid.
Consulta la documentación de Apigee Edge.

ExecutionError

Código de error

steps.javacallout.ExecutionError

Cuerpo de respuesta de error

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

Causa

Este error se produce si el código Java genera una excepción o devuelve null durante la ejecución de una política JavaCallout.

Diagnóstico

  1. Inicia una sesión de seguimiento para registrar el error e identificar qué política JavaCallout ha fallado.

  2. Examina la política JavaCallout y el recurso que se utiliza. En el ejemplo anterior, la política JavaCallout usa un recurso llamado hello.jar, como se muestra a continuación:

    <JavaCallout name="hello-java">
       <ClassName>com.apigeesample.HelloJava</ClassName>
       <ResourceURL>java://hello.jar</ResourceURL>
    </JavaCallout>
    
    
  3. Captura y almacena la excepción de Java en una variable de flujo modificando el código fuente, tal como se describe en Gestionar errores en políticas JavaCallout.

  4. Compila y sustituye el recurso afectado (archivo JAR) por el artefacto de Java actualizado.

  5. Despliega el proxy de API como una nueva revisión y haz la llamada a la API.

  6. Inicia otra sesión de seguimiento.

  7. Ten en cuenta que hay un seguimiento de pila disponible en la variable JAVA_STACKTRACE. El seguimiento de la pila muestra la excepción real, el archivo fuente de Java y el número de línea en el que se produce el error.

  8. Utiliza esta información para solucionar el problema en el código Java.

  9. En este ejemplo, la política JavaCallout ha fallado debido a una ArithmeticException (división por cero) en el archivo JavaError.java de la línea 25.

Resolución

  1. En función de la excepción que se haya producido, soluciona el problema en los archivos de origen de Java correspondientes. a. En el ejemplo anterior, el problema se ha debido a un error aritmético (división por cero). Ve al archivo de origen y al número de línea específicos indicados por el seguimiento de la pila.

    b. Como no se puede dividir entre cero, elimina el bloque else completo que contiene la línea de código incorrecta para resolver el problema.

  2. Sustituye el archivo JAR correspondiente que contenga los archivos modificados en el nivel adecuado (proxy de API, entorno u organización) donde se encontraba anteriormente.

  3. Guarda y despliega el proxy de API como una nueva revisión.