Устранение ошибок во время выполнения политики JavaCallout

Вы просматриваете документацию Apigee Edge .
Перейдите в документацию Apigee
X.info

ExecutionError

Код ошибки

steps.javacallout.ExecutionError

Тело ответа об ошибке

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

Причина

Эта ошибка возникает, если Java-код генерирует исключение или возвращает null во время выполнения политики JavaCallout .

Диагноз

  1. Запустите сеанс трассировки , чтобы зафиксировать ошибку и определить, какая политика JavaCallout завершилась с ошибкой.

  2. Изучите политику JavaCallout и используемый ресурс. В приведенном выше примере политика JavaCallout использует ресурс с именем 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-прокси как новую версию и выполните вызов API.

  6. Начать новую сессию трассировки.

  7. Обратите внимание, что трассировка стека доступна в переменной JAVA_STACKTRACE . В трассировке стека указано фактическое исключение, а также номер исходного файла Java и номер строки, в которой возникает ошибка.

  8. Используйте эту информацию для исправления ошибки в Java-коде.

  9. В этом примере политика JavaCallout завершилась с ошибкой ArithmeticException (деление на ноль) в файле JavaError.java в строке #25.

Разрешение

  1. В зависимости от возникшего исключения, исправьте проблему в соответствующем(их) исходном(ых) файле(ах) Java. а. В приведенном выше примере проблема была вызвана арифметической ошибкой (деление на ноль). Перейдите к конкретному исходному файлу и номеру строки, указанному в трассировке стека.

    b. Поскольку деление на ноль невозможно, удалите весь блок else, содержащий ошибочную строку кода, чтобы решить проблему.

  2. Замените соответствующий JAR-файл, содержащий измененные файлы, на том уровне (API-прокси, среда или организация), где он ранее существовал.

  3. Сохраните и разверните API-прокси как новую версию.