Solução de problemas de erro no ambiente de execução da política JavaCallout

Você está visualizando a documentação do Apigee Edge.
Acesse a documentação da Apigee X.
info

Erro de execução

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

Esse erro ocorre se o código Java gera uma exceção ou retorna null durante a execução de uma política JavaCallout.

Diagnóstico

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

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

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

  4. Compile e substitua o recurso afetado (arquivo JAR) pelo artefato Java atualizado.

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

  6. Inicie outra sessão de trace.

  7. Um stack trace está disponível na variável JAVA_STACKTRACE. O stack trace lista a exceção real e o arquivo de origem Java e o número da linha em que o erro é lançado.

  8. Use essas 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 arquivo JavaError.java na linha 25.

Resolução

  1. Dependendo da exceção lançada, corrija o problema nos arquivos de origem Java relevantes. a. No exemplo mostrado acima, o problema foi causado por um erro aritmético (divisão por zero). Acesse o arquivo de origem e o número de linha específicos indicados pelo stack trace.

    b. Como não é possível executar a divisão por zero, remova o bloco adicional completo que contenha a linha de código com falha para resolver o problema.

  2. Substitua o arquivo JAR relevante que contém os arquivos modificados no nível apropriado (proxy de API, ambiente ou organização), em que ele existia anteriormente.

  3. Salve e implante o proxy de API como uma nova revisão.