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

您目前查看的是 ApigeeApigee Hybrid 說明文件。
查看 Apigee Edge 說明文件。

ExecutionError

錯誤代碼

steps.javacallout.ExecutionError

錯誤回應主體

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

原因

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

診斷

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

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

    <JavaCallout name="hello-java">
       <ClassName>com.apigeesample.HelloJava</ClassName>
       <ResourceURL>java://hello.jar</ResourceURL>
    </JavaCallout>
    
    
  3. 如要擷取 Java 例外狀況並儲存在流程變數中,請修改原始碼,詳情請參閱「在 JavaCallout 政策中處理錯誤」。

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

  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 另存為新的修訂版本並部署。