排解 Java 呼叫政策執行階段錯誤

您正在查看 Apigee Edge 說明文件。
查看 Apigee X 說明文件
資訊

ExecutionError

錯誤代碼

steps.javacallout.ExecutionError

錯誤回應主體

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

原因

如果 Java 程式碼在執行 Java callout 政策時擲回例外狀況或傳回 null,就會發生這個錯誤。

診斷

  1. 啟動追蹤工作階段來擷取錯誤,並找出未通過的 Java callout 政策

  2. 檢查 Java callout 政策和使用的資源。在上述範例中,Java callout 政策會使用名為 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 Proxy 部署為新的修訂版本,並執行 API 呼叫。

  6. 啟動其他追蹤記錄工作階段。

  7. 請注意,JAVA_STACKTRACE 變數中可以使用堆疊追蹤。堆疊追蹤會列出實際例外狀況,以及擲回錯誤的 Java 來源檔案和行數。

  8. 請參閱這些資訊,在 Java 程式碼中修正問題。

  9. 在這個示例中,JavaError.java 檔案的第 25 行有 ArithmeticException (除以零) 導致 Java callout 政策失敗。

解析度

  1. 根據擲回的例外狀況,修正相關 Java 來源檔案中的問題。在上例中,問題是由算術錯誤 (除數為零) 所造成。前往堆疊追蹤指出的特定來源檔案和行數。

    b. 由於您無法以零執行除數,因此請移除包含錯誤程式碼行的完整區塊以解決問題。

  2. 將含有修改檔案的相關 JAR 檔案,替換成先前所在的層級 (API Proxy、環境或機構)。

  3. 儲存 API Proxy 並將其部署為新的修訂版本。