Apigee Edge のドキュメントを表示しています。
  
     Apigee X のドキュメント。 詳細
ExecutionError
エラーコード
steps.javacallout.ExecutionError
エラー レスポンスの本文
{
  "fault": {
    "faultstring": "Execution returned an error result",
    "detail": {
      "errorcode": "flow.execution.ExecutionReturnedFailure"
    }
  }
}
原因
このエラーは、JavaCallout ポリシーの実行中に Java コードが例外を出力する、または null を返す場合に発生します。
診断
- トレース セッションを開始してエラーをキャプチャし、失敗した JavaCallout ポリシーを特定します。  
- JavaCallout ポリシーと、使用されているリソースを確認します。上の例では、次のように、JavaCallout ポリシーで - hello.jarという名前のリソースが使用されています。- <JavaCallout name="hello-java"> <ClassName>com.apigeesample.HelloJava</ClassName> <ResourceURL>java://hello.jar</ResourceURL> </JavaCallout>
- Java コールアウトのエラー処理の説明に沿ってソースコードを変更することで、Java 例外をキャプチャしてフロー変数に格納します。 
- 影響を受けるリソース(JAR ファイル)をコンパイルして、更新された Java アーティファクトに置き換えます。 
- API プロキシを新しいリビジョンとしてデプロイし、API 呼び出しを行います。 
- 別のトレース セッションを開始します。  
- JAVA_STACKTRACE変数でスタック トレースを使用できることに注意してください。スタック トレースには、実際の例外と、エラーがスローされた Java ソースファイルと行番号が表示されます。
- この情報を使用して、Java コードの問題を修正します。 
- この例では、 - JavaError.javaファイルの 25 行目の ArithmeticException(ゼロ除算)が原因で JavaCallout ポリシーが失敗しました。
解決策
- スローされた例外に応じて、関連する Java ソースファイルの問題を修正します。a. 上記の例では、算術エラー(ゼロ除算)が問題の原因でした。スタック トレースで示されている特定のソースファイルと行番号に移動します。  - b. ゼロによる除算は実行できないため、問題のあるコード行が含まれている else ブロック全体を削除してください。 
- 変更済みのファイルを含めて関連する JAR ファイルを、以前に存在していた適切なレベル(API プロキシ、環境、または組織)に置き換えます。 
- API プロキシを保存して新しいリビジョンとしてデプロイします。