הדף הזה רלוונטי ל-Apigee ול-Apigee Hybrid.
לעיון במסמכי התיעוד של Apigee Edge
ResourceDoesNotExist
הודעת השגיאה
פריסת ה-proxy ל-API דרך ממשק המשתמש או ה-API של Apigee נכשלת ומוצגת הודעת השגיאה הבאה:
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 \ "https://apigee.googleapis.com/v1/organizations/$ORG/environments/$ENV/resourcefiles/java/myresource.jar" \ -H "Authorization: Bearer $TOKEN"
$TOKENמוגדר כאסימון הגישה מסוג OAuth 2.0, כפי שמתואר במאמר איך מקבלים אסימון גישה מסוג OAuth 2.0. מידע על האפשרויותcurlשבהן נעשה שימוש בדוגמה הזו מופיע במאמר שימוש ב-curl. תיאור של משתני הסביבה שבהם אפשר להשתמש מופיע במאמר בנושא הגדרת משתני סביבה לבקשות API של Apigee.
אם מקבלים קוד סטטוס 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 דרך ממשק המשתמש או ה-API של Apigee נכשלת ומוצגת הודעת השגיאה הבאה:
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 \ "https://apigee.googleapis.com/v1/organizations/$ORG/environments/$ENV/resourcefiles/java/myresource.jar" \ -H "Authorization: Bearer $TOKEN"
$TOKENמוגדר לאסימון הגישה שלכם ב-OAuth 2.0, כמו שמתואר במאמר קבלת אסימון גישה מסוג OAuth 2.0. למידע על האפשרויותcurlשמשמשות בדוגמה הזו, אפשר לעיין במאמר שימוש ב-curl.אם מקבלים קוד סטטוס 404 כתגובה לממשקי ה-API האלה, סימן שהמשאב חסר ברמת הסביבה.
רזולוציה
- אם קובעים שהמשאב קיים ברמת שרת ה-proxy של ה-API או ברמת הסביבה, צריך למחוק את המשאב ולהעלות אותו מחדש, כמו שמתואר בשלב 2. אם לא, מדלגים לשלב 3.
כדי למחוק את המשאב ברמת ה-proxy ל-API, עוברים לכרטיסייה Resources (משאבים) בחלונית Navigator (ניווט) של הכלי לעריכת proxy ל-API ולוחצים על הלחצן X לצד המשאב, כמו שמוצג בהמשך.

כדי למחוק משאב בסביבה, משתמשים בפועל DELETE בקריאות ה-API שבהן השתמשתם קודם בשלבי האבחון. לדוגמה, כדי למחוק את המשאב ברמת הסביבה, מזינים את הפקודה הבאה:
curl -X DELETE \ "https://apigee.googleapis.com/v1/organizations/$ORG/environments/$ENV/resourcefiles/java/myresource.jar" \ -H "Authorization: Bearer $TOKEN"
$TOKENמוגדר לאסימון הגישה שלכם ב-OAuth 2.0, כמו שמתואר במאמר קבלת אסימון גישה מסוג OAuth 2.0. למידע על האפשרויותcurlשמשמשות בדוגמה הזו, אפשר לעיין במאמר שימוש ב-curl.מעלים את קובץ ה-JAR) ברמה המתאימה (proxy ל-API או רמת הסביבה).
אם העלאה מחדש של המשאב לא עוזרת, אפשר לפנות אל התמיכה של Apigee.
JavaCalloutInstantiationFailed
הודעת השגיאה
פריסת ה-proxy ל-API דרך ממשק המשתמש או ה-API של Apigee נכשלת ומוצגת הודעת השגיאה הבאה:
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.
הסיבה: קובץ כיתה חסר
אבחון
- בודקים אם קובץ המחלקה הספציפי של Java (שזוהה בשלב 1 למעלה) הוא חלק מקובץ ה-JAR שצוין ב->ResourceURL< או מקובצי JAR תלויים כלשהם.
- אם קובץ הכיתה לא קיים באף אחד מקובצי ה-JAR, מצאתם את הסיבה לשגיאה. עוברים אל 'רזולוציה'.
- אם קובץ המחלקה קיים באחד מקובצי ה-JAR שצוינו במדיניות JavaCallout, כנראה שיש בעיה בקוד Java או במחלקה התלויה שגורמת לשגיאה הזו. לקבלת עזרה, אפשר לפנות אל התמיכה של Apigee.
רזולוציה
- צריך לבנות מחדש את קובץ ה-JAR עם קובצי המחלקה החסרים ולהעלות את קובץ ה-JAR ברמה המתאימה (proxy ל-API או רמת הסביבה).
- פורסים מחדש את ה-API Proxy.
העלאת קובץ JAR
מוודאים שרכיב המשאב עם כל המחלקות הנדרשות קיים ברמת ה-API Proxy או הסביבה. מידע נוסף זמין במאמר בנושא קובצי משאבים.
כדי להעלות משאב ברמת ה-API proxy, לוחצים על + (סימן הפלוס) בכרטיסייה Resources, בוחרים באפשרות Import file ומעלים קובץ מהמחשב המקומי. שם הקובץ צריך להיות זהה לרכיב >ResourceURL<, אבל ללא התחילית
java://.
אם רוצים שמשאב יהיה זמין ליותר מ-proxy ל-API אחד באותה סביבה, צריך להעלות את המשאב לסביבה. תצטרכו להשתמש ב-Apigee API, כמו שמתואר במאמר קובצי משאבים.
לדוגמה, מזינים את הקריאה הבאה ל-API מהמחשב המקומי כדי להעלות את הקובץ שצוין ברמת הסביבה:
curl -H "Content-Type: application/octet-stream" \ -X POST -H "Authorization: Bearer $TOKEN" --data-binary @{classes.jar} \ "https://apigee.googleapis.com/v1/organizations/$ORG/environments/$ENV/resourcefiles?name=myresouce.jar&type=java"
$TOKENמוגדר לאסימון הגישה שלכם ב-OAuth 2.0, כמו שמתואר במאמר קבלת אסימון גישה מסוג OAuth 2.0. למידע על האפשרויותcurlשמשמשות בדוגמה הזו, אפשר לעיין במאמר שימוש ב-curl.מבצעים את הקריאה ל-API מאותה ספרייה שבה נמצא הקובץ.
כדי להפוך את הקובץ לזמין לכל ה-API proxy בכל הסביבות בארגון, אפשר להשמיט את פרטי הסביבה בנתיב הבסיסי. לדוגמה:
curl -H "Content-Type: application/octet-stream" \ -X POST -H "Authorization: Bearer $TOKEN" --data-binary @{classes.jar} \ "https://apigee.googleapis.com/v1/organizations/$ORG/resourcefiles?name=myresouce.jar&type=java"
$TOKENמוגדר לאסימון הגישה שלכם ב-OAuth 2.0, כמו שמתואר במאמר קבלת אסימון גישה מסוג OAuth 2.0. למידע על האפשרויותcurlשמשמשות בדוגמה הזו, אפשר לעיין במאמר שימוש ב-curl.