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

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

ExecutionError

錯誤代碼

steps.javacallout.ExecutionError

錯誤回應主體

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

原因

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

診斷

  1. 啟動追蹤工作階段,擷取錯誤並找出失敗的 JavaCallout 政策

  2. 檢查 Java callout 政策和使用的資源。在上述範例中,JavaCallout 政策使用名為 hello.jar 的資源,如下所示:

    <JavaCallout name="hello-java">
       <ClassName>com.apigeesample.HelloJava</ClassName>
       <ResourceURL>java://hello.jar</ResourceURL>
    </JavaCallout>
    
    
  3. 按照處理 Java 呼叫中的錯誤的說明,修改原始碼,藉此在流程變數中擷取並儲存 Java 例外狀況。

  4. 編譯並以更新版 Java 構件取代受影響的資源 (JAR 檔案)。

  5. 將 API Proxy 部署為新的修訂版本,並發出 API 呼叫。

  6. 開始另一個追蹤工作階段。

  7. 請注意,JAVA_STACKTRACE 變數中會提供堆疊追蹤。堆疊追蹤會列出實際例外狀況,以及發生錯誤的 Java 來源檔案和行號。

  8. 使用此資訊修正 Java 程式碼中的問題。

  9. 在本例中,Java 呼叫政策執行失敗,原因是 JavaError.java 檔案的第 25 行含有 ArithmeticException (除以零)。

解析度

  1. 視擲回的例外狀況而定,修正相關 Java 來源檔案中的問題。 a. 在上述範例中,問題是由算術錯誤 (除以零) 造成。前往堆疊追蹤記錄所指示的特定來源檔案和行號。

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

  2. 在適當層級 (API Proxy、環境或機構) 取代含有修改後檔案的 JAR 檔案,該檔案先前存在。

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