אתם צופים במסמכי התיעוד של Apigee Edge.
כדאי לעיין במסמכי התיעוד של Apigee X. מידע
ResourceDoesNotExist
הודעת השגיאה
פריסת ה-proxy ל-API דרך ממשק המשתמש של Edge או Edge management API נכשלת עם הודעת השגיאה הבאה:
Error Deploying Revision <var>revision_number</var> to <var>environment</var>
Resource with name <var>ResourceURL</var> and type java does not exist.
הודעת שגיאה לדוגמה
Error Deploying Revision 1 to test
Resource with name myresource.jar and type java does not exist.
דוגמה לצילום מסך של שגיאה

סיבה
אם המשאב שצוין ברכיב <ResourceURL> במדיניות JavaCallout לא קיים ב-proxy ל-API, בסביבה או ברמת הארגון, פריסת ה-proxy ל-API תיכשל.
אבחון
מזהים את הסביבה ואת שם המשאב. המידע הזה מופיע בהודעת השגיאה. לדוגמה, בשגיאה הבאה הסביבה היא
testושם המשאב שמשמש ברכיב <ResourceURL>הואmyresource.jar.Error Deploying Revision 1 to test Resource with name myresource.jar and type java does not exist.מזהים את מדיניות JavaCallout שמשתמשת במשאב שזוהה בשלב 1 למעלה.
לדוגמה, המדיניות הבאה מציינת שהערך של <
ResourceURL>הואmyresource.jar, שזהה לערך בהודעת השגיאה:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <JavaCallout name="hello-java"> <ClassName>com.apigeesample.HelloJava</ClassName> <ResourceURL>java://myresource.jar</ResourceURL> </JavaCallout>קובעים אם המשאב הוא חלק מ-proxy ל-API שנכשל או שהוא הועלה ברמת הסביבה או הארגון. אם לא, זו הסיבה לשגיאה.
עוברים לכרטיסייה Resources (משאבים) בחלונית Navigator (ניווט) של עורך ה-proxy ל-API כדי לראות את כל המשאבים שהועלו ברמת ה-proxy ל-API. בדוגמה הזו, לא הועלו משאבים ל-proxy ל-API.

המשאבים יכולים להיות זמינים ברמת הסביבה או הארגון. מידע נוסף זמין במאמר בנושא קובצי משאבים.
כדי לבדוק אם המשאב קיים ברמת הסביבה, מריצים את קריאה ל-API הבאה באמצעות curl:
curl -v -u <strong>email </strong>"https://api.enterprise.apigee.com/v1/organizations/myorg/environments/myenv/resourcefiles/java/myresource.jar"כדי לבדוק אם המשאב קיים ברמת הארגון, מריצים את קריאת ה-API הבאה באמצעות curl, בלי לכלול את פרטי הסביבה:
curl -v -u email "https://api.enterprise.apigee.com/v1/organizations/myorg/resourcefiles/java/myresource.jar"
אם מקבלים קוד סטטוס 404 כתגובה לממשקי ה-API האלה, סימן שהמשאב חסר גם ברמת הארגון וגם ברמת הסביבה.
אם המשאב לא זמין ברמת proxy ל-API, הארגון והסביבה, תוחזר שגיאת הפריסה:
Resource with name myresource.jar and type java does not exist. ```
רזולוציה
מוודאים שהמשאב שצוין ברכיב <ResourceURL> קיים ברמת ה-proxy ל-API, הסביבה או הארגון. מידע נוסף זמין במאמר בנושא קובצי משאבים.
כדי לתקן את מדיניות JavaCallout שמוצגת למעלה, מעלים את קובץ ה-JAR ברמה המתאימה (proxy ל-API, ארגון או סביבה).
NoResourceForURL
הודעת השגיאה
פריסת ה-proxy ל-API דרך ממשק המשתמש של Edge או Edge management API נכשלת עם הודעת השגיאה הבאה:
Error in deployment for environment <var>environment</var>
The revision is deployed, but traffic cannot flow. Could not locate a resource with URL <var>ResourceURL</var>
הודעת שגיאה לדוגמה
Error in deployment for environment test
The revision is deployed, but traffic cannot flow. Could not locate a resource with URL java://myresource.jar
דוגמה לצילום מסך של שגיאה

סיבה
השגיאה הזו יכולה להתרחש אם קובץ המשאבים פגום או שההעלאה שלו לא הושלמה, גם אם נראה שהוא קיים ברמת ה-proxy ל-API, הסביבה או הארגון.
אבחון
מזהים את הסביבה ואת שם המשאב. המידע הזה מופיע בהודעת השגיאה. לדוגמה, בשגיאה הבאה, שם הסביבה הוא
testושם המשאב שמשמש ברכיב <ResourceURL>הואmyresource.jar.Error in deployment for environment test The revision is deployed, but traffic cannot flow. Could not locate a resource with URL java://myresource.jarמוודאים שהמשאב הועלה ברמת ה-proxy ל-API, הסביבה או הארגון. בדוגמה שלמטה אפשר לראות שהמשאב
myresource.jarמועלה ברמת ה-proxy ל-API.
המשאבים יכולים להיות זמינים ברמת הסביבה או הארגון. מידע נוסף זמין במאמר בנושא קובצי משאבים.
כדי לבדוק אם המשאב קיים ברמת הסביבה, מריצים את קריאה ל-API הבאה באמצעות curl:
curl -v -u <strong>email </strong>"https://api.enterprise.apigee.com/v1/organizations/myorg/environments/myenv/resourcefiles/java/myresource.jar"כדי לבדוק אם המשאב קיים ברמת הארגון, מריצים את קריאה ל-API הבאה באמצעות curl, בלי פרטי הסביבה:
curl -v -u email "https://api.enterprise.apigee.com/v1/organizations/myorg/resourcefiles/java/myresource.jar"אם מקבלים קוד סטטוס 404 כתגובה לממשקי ה-API האלה, סימן שהמשאב חסר גם ברמת הארגון וגם ברמת הסביבה.
רזולוציה
- אם קובעים שהמשאב קיים ברמת ה-proxy ל-API, הארגון או הסביבה, צריך למחוק את המשאב ולהעלות אותו מחדש, כמו שמתואר בשלב 2. אם לא, מדלגים לשלב 3.
כדי למחוק את המשאב ברמת ה-proxy ל-API, עוברים לכרטיסייה Resources (משאבים) בחלונית Navigator (ניווט) של כלי העריכה של ה-proxy ל-API ולוחצים על הלחצן X שליד המשאב, כמו שמוצג בהמשך.

כדי למחוק משאב ברמת הסביבה או הארגון, משתמשים בפועל DELETE בקריאות ה-API שבהן השתמשתם קודם בשלבי האבחון. לדוגמה, כדי למחוק את המשאב ברמת הסביבה, מזינים את הפקודה הבאה:
curl -X DELETE -v -u <strong>email </strong>"https://api.enterprise.apigee.com/v1/organizations/myorg/environments/myenv/resourcefiles/java/myresource.jar"מעלים את קובץ ה-JAR) ברמה המתאימה (proxy ל-API, ארגון או סביבה).
אם העלאה מחדש של המשאב לא עוזרת, צריך להפעיל מחדש את מעבדי ההודעות המושפעים. אם אתם משתמשים ב-Apigee Edge ב-Cloud, פנו אל התמיכה של Apigee. משתמשי Private Cloud יכולים לעיין במאמר הפעלה, עצירה, הפעלה מחדש ובדיקת הסטטוס של Apigee Edge.
JavaCalloutInstantiationFailed
הודעת השגיאה
פריסת ה-proxy ל-API דרך ממשק המשתמש של Edge או Edge management API נכשלת עם הודעת השגיאה הבאה:
Error in deployment for environment <var>environment</var>
The revision is deployed, but traffic cannot flow. Failed to instantiate the JavaCallout Class <var>class_name</var>
או
Error in deployment for environment <var>environment</var>.
The revision is deployed and traffic can flow, but flow may be impaired. Failed to instantiate the JavaCallout Class <var>class_name</var>
הודעת שגיאה לדוגמה
Error in deployment for environment test
The revision is deployed, but traffic cannot flow. Failed to instantiate the JavaCallout Class my.class
דוגמה לצילום מסך של שגיאה

סיבה
אלה סיבות אופייניות לשגיאה הזו
| הסיבה | תיאור |
| חסר קובץ JAR | קובץ ה-JAR שמכיל את מחלקת ה-Java שזוהתה בשגיאה לא הועלה. |
| קובץ JAR פגום | קובץ ה-JAR שמכיל את מחלקת ה-Java שזוהתה בשגיאה פגום או שההעלאה שלו לא הושלמה. |
| חסר קובץ Class | קובץ המחלקה של Java שזוהה בשגיאה לא נכלל בקובץ ה-JAR שצוין ב->ResourceURL< או בקובצי JAR תלויים. |
| בעיה בקוד Java | יש שגיאה בקוד, למשל חסר קונסטרוקטור, יש בעיה בתלות בקוד או בעיה אחרת. |
שלב אבחון נפוץ
מזהים את שם הסביבה ואת הכיתה שלא הצליחו לייבא. לדוגמה, בהודעת השגיאה הבאה, שם הסביבה הוא
testושם המחלקה הואmy.class:Error in deployment for environment test The revision is deployed, but traffic cannot flow. Failed to instantiate the JavaCallout Class my.classהגורם: חסר קובץ JAR
אבחון
- מזהים את קובץ ה-JAR שאמור להכיל את המחלקה (שזוהתה בשלב 1 למעלה) ושלא ניתן ליצור ממנו מופע.
- בודקים אם קובץ ה-JAR הספציפי הועלה ברמת ה-proxy ל-API, הארגון או הסביבה. אם קובץ ה-JAR לא הועלה לאף אחת מהרמות, צריך לעבור אל 'פתרון'.
- אם קובץ ה-JAR הועלה, צריך לעבור אל הגורם: קובץ JAR פגום.
רזולוציה
- אם קובץ ה-JAR פגום או הועלה באופן חלקי, צריך לבנות מחדש את ה-JAR ולהעלות את קובץ ה-JAR ברמה המתאימה (proxy ל-API, ארגון או סביבה).
- פורסים מחדש את ה-proxy ל-API.
הסיבה: קובץ JAR פגום
אבחון
- קובעים את קובץ ה-JAR שאמור להכיל את המחלקה (שזוהתה בשלב 1 למעלה) שלא ניתן ליצור ממנה מופע.
- בודקים אם קובץ ה-JAR הספציפי פגום. לדוגמה, אם אי אפשר לבטל את ה-JAR של הקובץ כי הוא פגום או שההעלאה שלו לא הושלמה. אם הקובץ פגום, עוברים אל 'פתרון'.
- אם קובץ ה-JAR לא פגום, עוברים אל הסיבה: קובץ Class חסר.
רזולוציה
- בונים מחדש את קובצי ה-JAR הפגומים ומעלים את קובץ ה-JAR ברמה המתאימה (proxy ל-API, ארגון או סביבה).
- פורסים מחדש את ה-proxy ל-API.
הסיבה: חסר קובץ Class
אבחון
- בודקים אם קובץ מחלקת Java הספציפי (שזוהה בשלב 1 למעלה) הוא חלק מקובץ ה-JAR שצוין ב->ResourceURL< או מקובצי JAR תלויים כלשהם.
- אם קובץ הכיתה לא קיים באף אחד מקובצי ה-JAR, מצאתם את הסיבה לשגיאה. עוברים אל 'רזולוציה'.
- אם קובץ המחלקה קיים באחד מקובצי ה-JAR שצוינו במדיניות JavaCallout, כנראה שיש בעיה בקוד Java או במחלקה התלויה שגורמת לשגיאה הזו. א. אם אתם משתמשים ב-Public Cloud, פנו אל התמיכה של Apigee. ב. אם אתם משתמשים ב-Private Cloud, אתם יכולים לעבור אל הסיבה: בעיה בקוד Java.
רזולוציה
- צריך לבנות מחדש את קובץ ה-JAR עם קובצי המחלקה החסרים ולהעלות את קובץ ה-JAR ברמה המתאימה (proxy ל-API, ארגון או סביבה).
- פורסים מחדש את ה-API Proxy.
הסיבה: בעיה בקוד Java
שלבי אבחון למשתמשי Private Cloud בלבד
אבחון
- בודקים את היומנים של מעבד ההודעות (
/opt/apigee/var/log/edge-message-processor/system.logו-/opt/apigee/var/log/edge-message-processor/configurations.log). יכול להיות שתראו חריגה שדומה לדוגמה הבאה:
2019-07-05 05:40:13,240 org:myorg env:staging target:/organizations/myorg/apiproxies/MyAPI/revisions/5 action:add context-id: mode: Apigee-Main-53 ERROR CONFIG-CHANGE - AbstractConfigurator.add() : Add null to Step failed, reason: {} com.apigee.kernel.exceptions.spi.UncheckedException: Failed to instantiate the JavaCallout Class <class name> at com.apigee.steps.javacallout.JavaCalloutStepDefinition.newInstance(JavaCalloutStepDefinition.java:116) at com.apigee.messaging.runtime.StepDefinition.getStepDefinitionExecution(StepDefinition.java:218) …<snipped> Caused by: java.lang.reflect.InvocationTargetException: null at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at com.apigee.steps.javacallout.JavaCalloutStepDefinition.access$100(JavaCalloutStepDefinition.java:41) at com.apigee.steps.javacallout.JavaCalloutStepDefinition$CallOutWrapper.initialize(JavaCalloutStepDefinition.java:131) at com.apigee.steps.javacallout.JavaCalloutStepDefinition$CallOutWrapper.<init>(JavaCalloutStepDefinition.java:126) ... 42 common frames omitted Caused by: <Reason> ...<snipped>קוראים את החריג בקפידה כדי להבין את הסיבה לכישלון. בדרך כלל, זה מצביע על בעיה בקוד Java.
רזולוציה
- יכול להיות שתצטרכו לתקן את הבעיה בקוד Java, בהתאם לגורם לכישלון.
- צריך לבנות מחדש את קובץ ה-JAR עם קובצי המחלקה שחסרים ולהעלות את קובץ ה-JAR ברמה המתאימה (proxy ל-API, ארגון או סביבה).
- פורסים מחדש את ה-API Proxy.
העלאת קובץ JAR
מוודאים שאלמנט המשאב עם כל המחלקות הנדרשות קיים ברמת שרת ה-proxy של ה-API, הסביבה או הארגון. מידע נוסף זמין במאמר בנושא קובצי משאבים.
כדי להעלות משאב ברמת ה-API proxy, לוחצים על + (סימן הפלוס) בכרטיסייה Resources (משאבים), בוחרים באפשרות Import file (ייבוא קובץ) ומעלים קובץ מהמחשב המקומי. שם הקובץ צריך להיות זהה לרכיב >ResourceURL<, אבל ללא הקידומת
java://.
אם רוצים שמשאב יהיה זמין ליותר מ-proxy ל-API אחד באותה סביבה, צריך להעלות את המשאב לסביבה. תצטרכו להשתמש ב-Edge API, כמו שמתואר במאמר בנושא קובצי משאבים.
לדוגמה, מזינים את הקריאה הבאה ל-API מהמחשב המקומי כדי להעלות את הקובץ שצוין ברמת הסביבה:
curl -v -u email -H "Content-Type: application/octet-stream" \ -X POST --data-binary @{classes.jar} \ "http://{mgmt_server}:{port}/v1/organizations/myorg/environments/myenv/resourcefiles?name=myresouce.jar&type=java"מבצעים את הקריאה ל-API מאותה ספרייה שבה נמצא הקובץ.
כדי שהקובץ יהיה זמין לכל ה-API proxy בכל הסביבות בארגון, אפשר להשמיט את פרטי הסביבה בנתיב הבסיסי. לדוגמה:
curl -v -u email -H "Content-Type: application/octet-stream" \ -X POST --data-binary @{classes.jar} \ "http://{mgmt_server}:{port}/v1/organizations/myorg/resourcefiles?name=myresouce.jar&type=java"