מוצג המסמך של Apigee Edge.
עוברים אל
מסמכי תיעוד של Apigee X. מידע
מה
מאפשר לך להשתמש ב-Java כדי ליישם התנהגות מותאמת אישית שחורגת מההגדרה כללי מדיניות של Apigee. בקוד Java אפשר לגשת למאפייני ההודעות (כותרות, פרמטרים של שאילתות, content) ומשתני הזרימה בזרימה של שרת ה-proxy. אם רק התחלתם עם המדיניות הזו, למידע נוסף, ראו איך יוצרים שפת Java יתרונות מרכזיים.
לרשימת הגרסאות הנתמכות של Java, ראה נתמכות והגרסאות הנתמכות.
מתי
הנחיות נוספות מפורטות בקטע 'מתי כדאי להשתמש בהסבר על Java?' איך יוצרים שפת Java יתרונות מרכזיים.
מידע כללי
המדיניות בנושא יתרונות מרכזיים של Java מאפשרת לקבל ולהגדיר משתני זרימה, להפעיל לוגיקה מותאמת אישית ולבצע טיפול בשגיאות, חילוץ נתונים מבקשות או מתשובות ועוד. המדיניות הזו מאפשרת להטמיע התנהגות מותאמת אישית שלא מכוסה בכללי מדיניות סטנדרטיים אחרים של Edge.
תוכלו לארוז את אפליקציית Java עם כל קובץ JAR שאתם צריכים. הערה שיש מספר הגבלות על הפעולות שאפשר לבצע עם הסבר על Java. הגורמים האלה מפורטים בהמשך. בקטע הגבלות.דוגמאות
דוגמה פשוטה
איך יוצרים Java יתרונות מרכזייםאחזור מאפיינים בקוד Java
הרכיב <Property>
של המדיניות מאפשר לציין שם/ערך
שאפשר לאחזר בזמן הריצה בקוד ה-Java. לדוגמה פעילה שמשתמשת
נכסים, ראו איך להשתמש בנכסים
בהסבר על Java.
משתמשים ב<נכס> המאפיין name
של הרכיב כדי לציין את השם שאיתו
שבעזרתו אפשר לגשת למאפיין מקוד Java. של הרכיב <Property>
value (הערך בין התג הפותח לתג הסוגר) הוא הערך שיקבל
בקוד Java. הערך חייב להיות מחרוזת; אי אפשר להפנות למשתנה זרימה כדי לקבל
עם ערך מסוים.
- מגדירים את הנכס. כאן, ערך המאפיין הוא שם המשתנה
response.status.code
<JavaCallout async="false" continueOnError="false" enabled="true" name="JavaCallout"> <DisplayName>JavaCallout</DisplayName> <ClassName>com.example.mypolicy.MyJavaCallout</ClassName> <ResourceURL>java://MyJavaCallout.jar</ResourceURL> <Properties> <Property name="source">response.status.code</Property> </Properties> </Javascript>
- בקוד Java שלכם, מטמיעים את ה-constructor הבא במחלקה הביצוע
באופן הבא:
public class MyJavaCallout implements Execution{ public MyJavaCallout(Map<string, string> props){ // Extract property values from map. } ... }
הגדרת משתני זרימה בקוד Java
לקבלת תיאור ברור של אופן ההגדרה של משתנים בהקשר ההודעה (משתני זרימה) את קוד ה-Java שלכם, ראו פוסט זה בקהילת Apigee.
הפניה לרכיב
בהפניה לרכיב מתוארים הרכיבים והמאפיינים של מדיניות JavaCallout.
<JavaCallout name="MyJavaCalloutPolicy"> <ClassName>com.example.mypolicy.MyJavaCallout</ClassName> <ResourceURL>java://MyJavaCallout.jar</ResourceURL> </JavaCallout>
<JavaCallout> מאפיינים
<JavaCallout name="MyJavaCalloutPolicy" enabled="true" continueOnError="false" async="false" >
בטבלה הבאה מתוארים מאפיינים שמשותפים לכל רכיבי ההורה של המדיניות:
מאפיין | תיאור | ברירת מחדל | נוכחות |
---|---|---|---|
name |
השם הפנימי של המדיניות. הערך של המאפיין אפשר להשתמש ברכיב |
לא רלוונטי | חובה |
continueOnError |
צריך להגדיר את הערך יש להגדיר ל- |
false | אופציונלי |
enabled |
צריך להגדיר את הערך צריך להגדיר את הערך |
true | אופציונלי |
async |
המאפיין הזה הוצא משימוש. |
false | הוצא משימוש |
<DisplayName> רכיב
צריך להשתמש בנוסף למאפיין name
כדי להוסיף תווית למדיניות
עורך proxy של ממשק משתמש לניהול עם שם אחר בשפה טבעית.
<DisplayName>Policy Display Name</DisplayName>
ברירת מחדל |
לא רלוונטי אם משמיטים את הרכיב הזה, הערך של המאפיין |
---|---|
נוכחות | אופציונלי |
סוג | מחרוזת |
<ClassName> רכיב
מציינת את השם של מחלקת Java שמופעלת כשמדיניות Java Callout מופעלת.
חייבים להיכלל בקובץ ה-JAR שצוין על ידי <ResourceURL>
. צפייה
וגם איך יוצרים שפת Java
יתרונות מרכזיים.
<JavaCallout name="MyJavaCalloutPolicy"> <ResourceURL>java://MyJavaCallout.jar</ResourceURL> <ClassName>com.example.mypolicy.MyJavaCallout</ClassName> </JavaCallout>
ברירת המחדל: | לא רלוונטי |
נוכחות: | חובה |
סוג: | מחרוזת |
<Property> רכיב
מציינת מאפיין שאפשר לגשת אליו מקוד Java בזמן הריצה. עליך לציין ליטרל ערך מחרוזת עבור כל נכס; לא ניתן להפנות למשתני זרימה ברכיב הזה. עבור דוגמה לעבודה שמשתמשת במאפיינים. ראו איך להשתמש בנכסים הסבר על Java.
<Properties> <Property name="propName">propertyValue</Property> </Properties>
ברירת המחדל: | ללא |
נוכחות: | אופציונלי |
סוג: | מחרוזת |
מאפיינים
מאפיין | תיאור | ברירת מחדל | נוכחות |
---|---|---|---|
שם |
מציין את שם הנכס. |
לא רלוונטי | חובה. |
<ResourceURL> רכיב
הרכיב הזה מציין את קובץ ה-Java JAR שיופעל כשמדיניות ההסבר של Java פועלות.
ניתן לאחסן את הקובץ הזה בהיקף של שרת ה-proxy ל-API (בקטע
/apiproxy/resources/java
בחבילת ה-Proxy ל-API או בקטע 'סקריפטים' של
בחלונית Navigator של עורך ה-API, או בהיקף של הארגון או הסביבה לצורך שימוש חוזר
בכמה שרתי proxy של API, כפי שמתואר בקובצי משאבים.
<JavaCallout name="MyJavaCalloutPolicy"> <ResourceURL>java://MyJavaCallout.jar</ResourceURL> <ClassName>com.example.mypolicy.MyJavaCallout</ClassName> </JavaCallout>
ברירת המחדל: | ללא |
נוכחות: | חובה |
סוג: | מחרוזת |
התייחסות לשגיאות
בקטע הזה מתוארים קודי השגיאה והודעות השגיאה שהוחזרו, ומשתני התקלה שמוגדרים על ידי Edge כשהמדיניות הזו גורמת לשגיאה. חשוב לדעת את המידע הזה אם אתם מפתחים כללי כשל כדי לטפל בתקלות. מידע נוסף זמין במאמר מה צריך לדעת? מידע על שגיאות שקשורות למדיניות וטיפול פגמים.
שגיאות זמן ריצה
השגיאות האלה עשויות להתרחש כשהמדיניות מופעלת.
קוד תקלה | סטטוס HTTP | סיבה | תיקון |
---|---|---|---|
steps.javacallout.ExecutionError |
500 | קורה כשקוד Java גורם לחריגה או מחזיר ערך null במהלך ביצוע מדיניות JavaCallout. | build |
שגיאות פריסה
השגיאות האלה יכולות להתרחש כששרת ה-proxy שמכיל את המדיניות נפרס.
שם השגיאה | מחרוזת שגיאה | סטטוס HTTP | מתרחשת כאשר |
---|---|---|---|
ResourceDoesNotExist |
Resource with name
[name] and type [type] does not exist |
לא רלוונטי | הקובץ שצוין ברכיב <ResourceURL> לא קיים. |
JavaCalloutInstantiationFailed |
Failed to instantiate the JavaCallout Class [classname] |
לא רלוונטי | קובץ המחלקה שצוין ברכיב <ClassName> לא נמצא ב
צנצנת. |
IncompatibleJavaVersion |
Failed to load java class [classname] definition due to - [reason] |
לא רלוונטי | הצגת מחרוזת השגיאה. כדאי לעיין גם בקטע נתמכים והגרסאות הנתמכות. |
JavaClassNotFoundInJavaResource |
Failed to find the ClassName in java resource [jar_name] -
[class_name] |
לא רלוונטי | הצגת מחרוזת השגיאה. |
JavaClassDefinitionNotFound |
Failed to load java class [class_name] definition due to - [reason] |
לא רלוונטי | הצגת מחרוזת השגיאה. |
NoAppropriateConstructor |
No appropriate constructor found in JavaCallout class [class_name] |
לא רלוונטי | הצגת מחרוזת השגיאה. |
NoResourceForURL |
Could not locate a resource with URL [string] |
לא רלוונטי | הצגת מחרוזת השגיאה. |
משתני כשל
המשתנים האלה מוגדרים כשהמדיניות הזו גורמת לשגיאה. מידע נוסף זמין במאמר מה צריך לדעת? על שגיאות שקשורות למדיניות.
משתנים | איפה | דוגמה |
---|---|---|
fault.name="fault_name" |
fault_name הוא שם השגיאה, כפי שמצוין בטבלה שגיאות זמן ריצה שלמעלה. שם השגיאה הוא החלק האחרון בקוד השגיאה. | fault.name Matches "ExecutionError" |
javacallout.policy_name.failed |
policy_name הוא השם שצוין על ידי המשתמש של המדיניות שגרמה לבעיה. | javacallout.JC-GetUserData.failed = true |
דוגמה לתגובת שגיאה
{ "fault":{ "faultstring":"Failed to execute JavaCallout. [policy_name]", "detail":{ "errorcode":"javacallout.ExecutionError" } } }
דוגמה לכלל שגוי
<FaultRule name="JavaCalloutFailed"> <Step> <Name>AM-JavaCalloutError</Name> </Step> <Condition>(fault.name Matches "ExecutionError") </Condition> </FaultRule>
סכימות
הידור ופריסה
לפרטים על הידור של קוד Java מותאם אישית ופריסה שלו באמצעות שרת proxy, אפשר לעיין במאמר איך יוצרים Java. יתרונות מרכזיים.
הגבלות
בהמשך מפורטות המגבלות שצריך לקחת בחשבון כשכותבים יתרונות מרכזיים ב-Java:
- רוב קריאות המערכת אסורות. לדוגמה, לא ניתן להגדיר קריאות של מערכת הקבצים הפנימית או כותבת.
- גישה לרשת באמצעות שקעים. ב-Apigee יש הגבלה על הגישה ל-sitelocal, anylocal כתובות לולאה חוזרת וכתובות linklocal.
- ההסבר לא יכול לקבל מידע על התהליך הנוכחי, רשימת התהליכים או ניצול המעבד (CPU) או הזיכרון במכונה. יכול להיות שחלק מהקריאות האלה פעילות, אין תמיכה וחבות עליהם השבתה באופן פעיל בכל עת. כדי לשמור על תאימות להעברה, צריך להימנע מביצוע קריאות כאלה בקוד שלכם.
- אין תמיכה בהסתמכות על ספריות Java שכלולות ב-Apigee Edge. האלה ספריות מיועדות לפונקציונליות של מוצר Edge בלבד, ואין ערובה לכך שהספרייה יהיו זמינים ממהדורה להפצה.
- אין להשתמש ב-
io.apigee
או ב-com.apigee
כשם חבילות ב-Java הסברים. השמות האלה שמורים ומשמשים במודולים אחרים של Apigee.
אריזה
מציבים את ה-JAR ב-proxy ל-API דרך /resources/java
. אם נכס היתרונות המרכזיים של Java מסתמך
בספריות נוספות של צד שלישי שארוזות כקובצי JAR עצמאיים, ולאחר מכן למקם את קובצי ה-JAR האלה
בספרייה /resources/java
כדי לוודא שהם נטענים בצורה נכונה
בסביבת זמן ריצה.
אם אתם משתמשים בממשק המשתמש של הניהול כדי ליצור או לשנות את שרת ה-proxy, מוסיפים משאב חדש ו
לציין קובץ JAR תלוי נוסף. אם יש כמה JAR, פשוט מוסיפים אותם
משאבים נוספים. אין צורך לשנות את הגדרת המדיניות כדי לעיין באפשרויות נוספות
קובצי JAR. מספיק לשים אותם ב/resources/java
.
מידע על העלאת קובצי Java JAR מופיע במאמר קובצי משאבים.
דוגמה מפורטת שמדגימה איך לארוז ולפרוס נכס Java Callout באמצעות Maven או Javac, אפשר לעיין בקטע כיצד ליצור נכס יתרונות מרכזיים של Java.
Javadoc
Javadoc לכתיבת קוד יתרונות מרכזיים של Java מופיע כאן בכתובת GitHub. תצטרכו לשכפל או להוריד את ה-HTML למערכת שלכם, ואז פשוט לפתוח את הקובץ index.html בדפדפן.
הערות שימוש
- המדיניות בנושא נכסי יתרונות מרכזיים של Java לא מכילה קוד בפועל. במקום זאת, המדיניות בנושא יתרונות מרכזיים של Java מפנה
'משאב' ב-Java ומגדיר את השלב בתהליך ה-API שבו מופעל קוד ה-Java. אפשר
מעלים את Java JAR דרך עורך ה-Proxy של ממשק המשתמש לניהול, או שאפשר לכלול אותו
הספרייה
/resources/java
בשרתי proxy ל-API שאתם מפתחים באופן מקומי. - לביצוע פעולות פשוטות, כמו קריאות ל-API לשירותים מרוחקים, אנחנו ממליצים להשתמש ב המדיניות בנושא ServiceCallout לפרטים, ראו מדיניות בנושא יתרונות מרכזיים לשירות.
- באינטראקציות פשוטות יחסית עם תוכן ההודעות, כמו שינוי או חילוץ כותרות, פרמטרים או תוכן הודעות של HTTP, מומלץ להשתמש במדיניות JavaScript ב-Apigee.
נושאים קשורים
- לקבלת דוגמאות קשורות, אפשר לעיין ב-Java-cookbook מאגר הנתונים.