כרגע מוצג התיעוד של Apigee Edge.
כניסה למסמכי התיעוד של
Apigee X. מידע
מה
מאפשר לך להשתמש ב-Java כדי להטמיע התנהגות מותאמת אישית שאינה מוגדרת מראש במדיניות Apigee. בקוד ה-Java אפשר לגשת למאפייני ההודעות (כותרות, פרמטרים של שאילתות, תוכן) ומשתני זרימה בזרימה של שרת ה-proxy. אם רק התחלתם לעבוד עם המדיניות הזו, תוכלו לקרוא את המאמר איך יוצרים יתרונות מרכזיים של Java.
הגרסאות הנתמכות של Java מפורטות במאמר תוכנות נתמכות וגרסאות נתמכות.
מתי
להנחיות, ראו "מתי כדאי להשתמש בנכס יתרונות מרכזיים של Java?" במאמר כיצד ליצור הסבר של Java.
מידע כללי
המדיניות בנושא יתרונות מרכזיים של Java מאפשרת לקבל ולהגדיר משתני זרימה, להפעיל לוגיקה מותאמת אישית ולבצע טיפול בשגיאות, לחלץ נתונים מבקשות או מתגובות ועוד. המדיניות הזו מאפשרת להטמיע התנהגות מותאמת אישית שלא מכוסה על ידי אף מדיניות רגילה אחרת של Edge.
תוכל לארוז את יישום Java שלך בחבילה עם כל קובצי JAR שדרושים לך. שימו לב שיש הגבלות מסוימות על מה שאפשר לעשות עם יתרונות מרכזיים ב-Java. הקריטריונים האלה מפורטים בהמשך בקטע הגבלות.טעימות
דוגמה פשוטה
איך ליצור תוסף יתרונות מרכזיים של Javaאחזור נכסים בקוד Java
הרכיב <Property>
של המדיניות מאפשר לציין צמד של שם/ערך
שאפשר לאחזר בזמן הריצה בקוד Java. לקבלת דוגמה פועלת שמשתמשת במאפיינים, ראו איך משתמשים במאפיינים
ביתרונות המרכזיים ב-Java.
אפשר להשתמש במאפיין name
של הרכיב <Property> כדי לציין את השם
שבאמצעותו ניתן לגשת לנכס מקוד Java. הערך של הרכיב <Property>
(הערך שבין התג הפותח לתג הסוגר) הוא הערך שיתקבל על ידי קוד ה-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, מטמיעים את הבנאי הבא בהטמעה של מחלקת הביצוע באופן הבא:
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' מופעלת. המחלקה חייבת להיכלל בקובץ ה-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>
ברירת מחדל: | ללא |
נוכחות: | אופציונלי |
סוג: | מחרוזת |
מאפיינים
מאפיין | התיאור | ברירת המחדל | נוכחות |
---|---|---|---|
name |
מציין את שם הנכס. |
לא רלוונטי | חובה. |
<ResourceURL>
הרכיב הזה מציין את קובץ Java JAR שיופעל כשהמדיניות בנושא יתרונות מרכזיים של Java תפעל.
אפשר לאחסן את הקובץ הזה בהיקף של שרת ה-proxy של ה-API (בקטע
/apiproxy/resources/java
בחבילה של שרת proxy ל-API או בקטע Scripts בחלונית 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.
- הנכס לא יכול לקבל מידע על התהליך הנוכחי, על רשימת התהליכים או על ניצול המעבד/הזיכרון במחשב. יכול להיות שחלק מהקריאות האלה יפעלו, אבל הן לא נתמכות ועלולות להיות מושבתות באופן פעיל בכל שלב. כדי לשמור על תאימות להעברה, כדאי להימנע מביצוע קריאות כאלה בקוד שלכם.
- אין תמיכה בהסתמכות על ספריות Java שכלולות ב-Apigee Edge. הספריות האלה מיועדות לפונקציונליות של מוצרי Edge בלבד, ולא מובטח שספרייה תהיה זמינה מהגרסה להפצה.
- אין להשתמש ב-
io.apigee
או ב-com.apigee
כשם חבילות בנכסי יתרונות מרכזיים ב-Java. השמות האלה שמורים ומשמשים מודולים אחרים של Apigee.
אריזה
צריך להציב את ה-JAR בשרת proxy ל-API בקטע /resources/java
. אם ה-Java Callout שלך מסתמך על ספריות נוספות של צד שלישי שארוזות כקובצי JAR עצמאיים, צריך למקם גם את קובצי ה-JAR האלה בספרייה /resources/java
כדי לוודא שהם נטענים בצורה תקינה בזמן הריצה.
אם אתם משתמשים בממשק המשתמש לניהול כדי ליצור או לשנות את שרת ה-proxy, צריך להוסיף משאב חדש
ולציין עוד קובץ JAR תלוי. אם יש כמה מזהי JAR, פשוט מוסיפים אותם
כמשאבים נוספים. אין צורך לשנות את הגדרת המדיניות כדי להפנות
לקובצי JAR נוספים. מספיק לשים אותם ב/resources/java
.
למידע נוסף על העלאת Java JAR, אפשר לעיין בקובצי משאבים.
דוגמה מפורטת שממחישה איך לארוז ולפרוס יתרונות מרכזיים של Java באמצעות Maven או javac, אפשר לעיין במאמר איך יוצרים יתרונות מרכזיים של Java.
Javadoc
Javadoc מופיע כאן ב-GitHub. תצטרכו לשכפל או להוריד את ה-HTML למערכת שלכם, ואז לפתוח את הקובץ index.html בדפדפן.
הערות על שימוש
- מדיניות Java הסברים לא מכילה קוד בפועל. במקום זאת, המדיניות בנושא יתרונות מרכזיים של Java מפנה
ל 'משאב' של Java ומגדירה את השלב בתהליך ה-API שבו מתבצע קוד ה-Java. אפשר
להעלות את ה-Java JAR דרך עורך ה-proxy לניהול ממשק המשתמש, או לכלול אותו
בספרייה
/resources/java
בשרתי proxy של API שמפתחים באופן מקומי. - לפעולות פשוטות, כמו קריאות ל-API לשירותים מרוחקים, מומלץ להשתמש במדיניות של יתרונות מרכזיים של שירות. למידע נוסף, אפשר לעיין במדיניות בנושא יתרונות מרכזיים של שירות.
- לגבי אינטראקציות פשוטות יחסית עם תוכן ההודעה, כמו שינוי או חילוץ של כותרות, פרמטרים או תוכן של הודעות ב-HTTP, ההמלצה של Apigee היא להשתמש במדיניות JavaScript.
נושאים קשורים
- לדוגמאות קשורות, אפשר לעיין במאגר ספרי בישול ב-Java.