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

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

ExecutionError

錯誤代碼

steps.javacallout.ExecutionError

錯誤回應主體

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

原因

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

診斷

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

  2. 請檢查 JavaCallout 政策和所使用的資源。在上述範例中,Java 摘要政策會使用名為 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. 在這個範例中,JavaError.java 檔案第 25 行出現 ArithmeticException (除以零),導致 JavaCallout 政策失敗。

解析度

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

    b. 由於無法執行除以零的運算,請移除包含錯誤程式碼行的整個 else 區塊,以解決問題。

  2. 在先前存在的適當層級 (API 代理程式、環境或機構) 中,替換包含已修改檔案的相關 JAR 檔案。

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