تحديد وحلّ المشاكل المتعلقة بوقت تشغيل سياسة 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. انشر الخادم الوكيل لواجهة برمجة التطبيقات كنسخة جديدة وأجرِ طلب بيانات من واجهة برمجة التطبيقات.

  6. ابدأ جلسة تتبُّع أخرى.

  7. لاحِظ أنّه تتوفّر ميزة تتبُّع تسلسل استدعاء الدوال البرمجية في المتغيّر JAVA_STACKTRACE. يسرد تقرير تتبُّع تسلسل استدعاء الدوال البرمجية الاستثناء الفعلي وملف مصدر Java ورقم السطر الذي يظهر فيه الخطأ.

  8. استخدم هذه المعلومات لحل المشكلة في رمز Java.

  9. في هذا المثال، تعذّر تطبيق سياسة JavaCallout بسبب ArithmeticException (التقسيم على صفر) في الملف JavaError.java في السطر رقم 25.

درجة الدقّة

  1. أصلِح المشكلة في ملفات مصدر Java ذات الصلة بناءً على الاستثناء المطروح. أ. في المثال الموضّح أعلاه، نتجت المشكلة عن خطأ حسابي (القسمة على صفر). انتقِل إلى ملف المصدر المحدّد ورقم السطر المُشار إليه في تتبُّع تسلسل استدعاء الدوال البرمجية.

    b. نظرًا لأنه لا يمكنك إجراء القسمة على صفر، يمكنك إزالة قالب الجزء الآخر الكامل الذي يحتوي على سطر الرمز المعيب لحل المشكلة.

  2. استبدل ملف JAR ذا الصلة الذي يحتوي على الملفات المُعدَّلة على المستوى المناسب (وكيل واجهة برمجة التطبيقات أو بيئة أو مؤسسة واجهة برمجة التطبيقات)، حيث كان موجودًا سابقًا.

  3. حفظ الخادم الوكيل لواجهة برمجة التطبيقات ونشره كنسخة جديدة.