عیب یابی خطای زمان اجرا خط مشی JavaCallout

شما در حال مشاهده مستندات Apigee Edge هستید.
به مستندات Apigee X مراجعه کنید .
اطلاعات

خطای اجرا

کد خطا

steps.javacallout.ExecutionError

متن پاسخ خطا

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

علت

این خطا زمانی رخ می‌دهد که کد جاوا در حین اجرای یک سیاست JavaCallout، یک استثنا ایجاد کند یا مقدار null را برگرداند.

تشخیص

  1. یک جلسه ردیابی (trace session) را شروع کنید تا خطا را ثبت کنید و مشخص کنید کدام خط‌مشی JavaCallout با شکست مواجه شده است.

  2. سیاست JavaCallout و منبعی که استفاده می‌شود را بررسی کنید. در مثال بالا، سیاست JavaCallout از منبعی به نام hello.jar استفاده می‌کند، همانطور که در زیر نشان داده شده است:

    <JavaCallout name="hello-java">
       <ClassName>com.apigeesample.HelloJava</ClassName>
       <ResourceURL>java://hello.jar</ResourceURL>
    </JavaCallout>
    
    
  3. با تغییر کد منبع، همانطور که در بخش مدیریت خطاها در یک فراخوانی جاوا توضیح داده شده است، استثنای جاوا را در یک متغیر جریان ضبط و ذخیره کنید.

  4. منبع آسیب‌دیده (فایل JAR) را با نسخه به‌روز شده جاوا کامپایل و جایگزین کنید.

  5. پروکسی API را به عنوان یک نسخه جدید مستقر کنید و فراخوانی API را انجام دهید.

  6. یک جلسه ردیابی دیگر را شروع کنید.

  7. توجه داشته باشید که یک ردیابی پشته در متغیر JAVA_STACKTRACE موجود است. ردیابی پشته، استثنای واقعی و فایل منبع جاوا و شماره خطی که خطا در آن رخ می‌دهد را فهرست می‌کند.

  8. از این اطلاعات برای رفع مشکل در کد جاوا استفاده کنید.

  9. در این مثال، سیاست JavaCallout به دلیل خطای ArithmeticException (تقسیم بر صفر) در فایل JavaError.java در خط شماره ۲۵ با شکست مواجه شد.

وضوح تصویر

  1. بسته به استثنای رخ داده، مشکل را در فایل(های) منبع جاوای مربوطه برطرف کنید. الف. در مثال نشان داده شده در بالا، مشکل ناشی از یک خطای حسابی (تقسیم بر صفر) بود. به فایل منبع خاص و شماره خط مشخص شده توسط ردیابی پشته بروید.

    ب. از آنجایی که نمی‌توانید تقسیم بر صفر انجام دهید، بلوک else کامل حاوی خط کد معیوب را برای حل مشکل حذف کنید.

  2. فایل JAR مربوطه که حاوی فایل‌های اصلاح‌شده است را در سطح مناسب (API proxy، محیط یا سازمان) که قبلاً وجود داشته است، جایگزین کنید.

  3. پروکسی API را به عنوان یک نسخه جدید ذخیره و مستقر کنید.