JavaCallout 政策运行时错误问题排查

您正在查看 ApigeeApigee Hybrid 文档。
查看 Apigee Edge 文档。

ExecutionError

错误代码

steps.javacallout.ExecutionError

错误响应正文

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

原因

如果在执行 JavaCallout 政策期间 Java 代码抛出异常或返回 null,就会发生此错误。

诊断

  1. 启动跟踪会话以捕获错误并确定出现故障的 Java 政策

  2. 检查 JavaCallout 政策和所使用的资源。在上面的示例中,JavaCallout 政策使用名为 hello.jar 的资源,如下所示:

    <JavaCallout name="hello-java">
       <ClassName>com.apigeesample.HelloJava</ClassName>
       <ResourceURL>java://hello.jar</ResourceURL>
    </JavaCallout>
    
    
  3. 通过修改源代码,捕获 Java 异常并将其存储在流变量中,如处理 Java 标注中的错误中所述。

  4. 编译受影响资源(JAR 文件)并将其替换为更新后的 Java 制品。

  5. 将 API 代理部署为新的修订版本并进行 API 调用。

  6. 启动另一个跟踪会话。

  7. 请注意,JAVA_STACKTRACE 变量中提供了堆栈轨迹。堆栈轨迹列出了实际异常和 Java 源代码文件以及抛出异常的行号。

  8. 使用此信息可修复 Java 代码中的问题。

  9. 在此示例中,JavaCallout 政策JavaError.java 文件第 25 行中的 ArithmeticException(除以零)而出现故障。

解决方法

  1. 根据所抛出的异常,修复相关 Java 源代码文件中的问题。 a. 在上面显示的示例中,问题是由算术错误(除以零)导致的。转到堆栈轨迹指示的特定源代码文件和相应行号。

    b. 您不能执行除以零,因此请移除包含错误代码行的整个 else 块,即可解决该问题。

  2. 在之前存在的相应级别(API 代理、环境或组织)替换包含已修改文件的相关 JAR 文件。

  3. 将 API 代理保存并部署作为新修订版本。