Resolução de problemas de erros de tempo de execução da política JavaCallout

Está a ver a documentação do Apigee e do Apigee Hybrid.
Ver documentação do Apigee Edge.

ExecutionError

Código de erro

steps.javacallout.ExecutionError

Corpo da resposta de erro

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

Causa

Este erro ocorre se o código Java gerar uma exceção ou devolver null durante a execução de uma política JavaCallout.

Diagnóstico

  1. Inicie uma sessão de rastreio para capturar o erro e identificar que política JavaCallout falhou.

  2. Examine a política JavaCallout e o recurso usado. No exemplo acima, a política JavaCallout usa um recurso denominado hello.jar, conforme mostrado abaixo:

    <JavaCallout name="hello-java">
       <ClassName>com.apigeesample.HelloJava</ClassName>
       <ResourceURL>java://hello.jar</ResourceURL>
    </JavaCallout>
    
    
  3. Capture e armazene a exceção Java numa variável de fluxo modificando o código-fonte, conforme descrito em Como processar erros nas políticas JavaCallout.

  4. Compile e substitua o recurso afetado (ficheiro JAR) pelo artefacto Java atualizado.

  5. Implemente o proxy de API como uma nova revisão e faça a chamada API.

  6. Inicie outra sessão de rastreio.

  7. Tenha em atenção que está disponível um rastreio de pilha na variável JAVA_STACKTRACE. O rastreio da pilha indica a exceção real, o ficheiro de origem Java e o número da linha em que o erro está a ser lançado.

  8. Use estas informações para corrigir o problema no código Java.

  9. Neste exemplo, a política JavaCallout falhou devido a uma ArithmeticException (divisão por zero) no ficheiro JavaError.java na linha n.º 25.

Resolução

  1. Consoante a exceção gerada, corrija o problema nos ficheiros de origem Java relevantes. a. No exemplo apresentado acima, o problema foi causado por um erro aritmético (divisão por zero). Aceda ao ficheiro de origem específico e ao número da linha indicados pelo rastreio da pilha.

    b. Uma vez que não pode dividir por zero, remova o bloco else completo que contém a linha de código com falhas para resolver o problema.

  2. Substitua o ficheiro JAR relevante que contém os ficheiros modificados no nível adequado (proxy de API, ambiente ou organização), onde existia anteriormente.

  3. Guarde e implemente o proxy de API como uma nova revisão.