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

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

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. а. В примере выше проблема возникла из-за арифметической ошибки (деления на ноль). Перейдите к файлу и строке, указанным в трассировке стека.

    Б. Поскольку делить на ноль нельзя, удалите весь блок else, содержащий строку кода с ошибкой.

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

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