פתרון בעיות בזמן ריצה של מדיניות 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. מפעילים סשן מעקב כדי לתעד את השגיאה ולזהות איזו מדיניות Java יתרונות מרכזיים נכשלה.

  2. בחן את מדיניות JavaCallout ואת המשאב שבו נעשה שימוש. בדוגמה שלמעלה, המדיניות בנושא יתרונות מרכזיים ב-Java משתמשת במשאב בשם hello.jar, כפי שמוצג בהמשך:

    <JavaCallout name="hello-java">
       <ClassName>com.apigeesample.HelloJava</ClassName>
       <ResourceURL>java://hello.jar</ResourceURL>
    </JavaCallout>
    
    
  3. תיעוד ושמירה של החריגה ב-Java במשתנה זרימה על ידי שינוי קוד המקור, כפי שמתואר במאמר טיפול בשגיאות בהסבר של Java.

  4. עורכים את המשאב המושפע (קובץ JAR) ומחליפים אותו בארטיפקט המעודכן של Java.

  5. פורסים את שרת ה-Proxy ל-API כגרסה חדשה ומבצעים את הקריאה ל-API.

  6. מתחילים פעילות מעקב נוספת.

  7. שימו לב שדוח קריסות זמין במשתנה JAVA_STACKTRACE. דוח הקריסות מפרט את החריג בפועל ואת קובץ המקור ומספר השורה של Java שאליהם המערכת משלימה את השגיאה.

  8. היעזרו במידע הזה כדי לפתור את הבעיה בקוד ה-Java.

  9. בדוגמה הזו, המדיניות של Java callouts נכשלה עקב Arithmeticסביר (חלוקה באפס) בקובץ JavaError.java בשורה מס' 25.

רזולוציה

  1. בהתאם לתרחיש החריג, פותרים את הבעיה בקובצי המקור הרלוונטיים של Java. א. בדוגמה שלמעלה, הבעיה נגרמה עקב שגיאה חשבונית (חילוק באפס). עוברים לקובץ המקור ולמספר השורה הספציפיים שצוינו בדוח הקריסות.

    b. מאחר שלא ניתן לבצע חלוקה באפס, הסירו את הבלוק המלא שמכיל את שורת הקוד הפגומה כדי לפתור את הבעיה.

  2. מחליפים את קובץ ה-JAR הרלוונטי שמכיל את הקבצים ששונו ברמה המתאימה (שרת proxy של ממשק ה-API, סביבה או ארגון), במקום שהיו קיימים קודם לכן.

  3. שומרים ופורסים את שרת ה-API של ה-API כגרסה חדשה.