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

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

Ошибка выполнения

Код ошибки

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 как новую версию.