אתם צופים במסמכי התיעוד של Apigee Edge.
כדאי לעיין במסמכי התיעוד של Apigee X. מידע
מהי קריאה ל-Java?
אם אין לכם ניסיון עם קריאות ל-Java, מומלץ להתחיל עם המאמר איך יוצרים קריאה ל-Java.
שימוש במאפיינים בקריאה ל-Java
מאפיינים מאפשרים לציין צמדי שם/ערך במדיניות של קריאה ל-Java, שאפשר לגשת אליהם מקוד ה-Java בזמן ריצה. צריך לציין ערך מחרוזת מילולי לכל מאפיין. אי אפשר להפנות למשתני זרימה באלמנט הזה.
נסביר בעזרת דוגמה פשוטה של קריאה ל-Java שמשתמשת במאפיינים. בדוגמה הזו אנחנו יוצרים שרת proxy שכולל מדיניות של קריאה ל-Java. המדיניות משתמשת באלמנט <Properties> כדי לציין צמד של שם/ערך. בקוד Java, מאחזרים את הערך ומשתמשים בו כדי להגדיר כותרת תגובה.
הורדת הפרויקט
כדי לפשט את התהליך, אפשר להוריד את הפרויקט הזה ממאגר api-platform-samples של Apigee ב-GitHub.
- מורידים או משכפלים את api-platform-samples למערכת.
- במסוף או בכלי לעריכת קוד לפי בחירתכם, עוברים לפרויקט
api-platform-samples/doc-samples/java-properties.
המדיניות בנושא קריאה ל-Java
המדיניות משתמשת ברכיב <Properties>. האלמנט הזה מאפשר לציין צמדים של שם/ערך. בזמן הריצה, קוד ה-Java יכול לגשת לערכים של המאפיינים שצוינו במדיניות, כפי שנראה בהמשך.
<JavaCallout name="java-callout"> <ClassName>com.apigeesample.JavaProperties</ClassName> <ResourceURL>java://edge-custom-policy-java-properties.jar</ResourceURL> <Properties> <Property name="prop">WORLD!</Property> </Properties> </JavaCallout>
קוד Java לדוגמה
הקוד ב-Java בדוגמה הזו מראה איך לאחזר מאפיין שצוין במדיניות של קריאה ל-Java. בפרויקט לדוגמה, קוד המקור נמצא בתיקייה
java-properties/callout/src/main/java/JavaProperties.java. בהמשך הנושא הזה נסביר איך לקמפל ולהטמיע את הקוד הזה.
package com.apigeesample; import com.apigee.flow.execution.ExecutionContext; import com.apigee.flow.execution.ExecutionResult; import com.apigee.flow.execution.spi.Execution; import com.apigee.flow.message.MessageContext; import java.util.Map; public class JavaProperties implements Execution { private Map <String,String> properties; // read-only public JavaProperties(Map <String,String> properties) { this.properties = properties; } public ExecutionResult execute(MessageContext messageContext, ExecutionContext executionContext) { try { messageContext.getMessage().setHeader("X-PROPERTY-HELLO", this.properties.get("prop")); return ExecutionResult.SUCCESS; } catch (Exception e) { return ExecutionResult.ABORT; } } }
קומפילציה של הקוד באמצעות Maven
הפרויקט מוגדר כך שאפשר לבצע קומפילציה באמצעות Maven. אם רוצים להשתמש בערך javac, נכלול גם דוגמה.
- מוודאים ש-Maven מותקן:
mvn -version
- מריצים את הסקריפט
java-properties/buildsetup.sh. הסקריפט הזה מתקין את יחסי התלות הנדרשים ב-JAR במאגר Maven המקומי. - משתמשים בפקודה cd כדי לעבור לספרייה
java-properties/callout. - מריצים את Maven:
mvn clean package
- אם רוצים, אפשר לוודא שקובץ ה-JAR
edge-custom-policy-java-properties.jarהועתק אלjava-properties/apiproxy/resources/java. זה המיקום הנדרש לקובצי JAR שרוצים לפרוס באמצעות שרת proxy.
קומפילציה באמצעות javac (אופציונלי)
אם רוצים להשתמש ב-javac כדי לקמפל את הקוד, אפשר לעשות משהו דומה למה שמופיע בהמשך (מתוך הספרייה java-properties). קובצי ה-JAR הנדרשים מסופקים לכם בספרייה java-properties/lib.
- cd אל
api-platform-samples/doc-samples/java-properties. - חשוב לוודא ש-javac נמצא בנתיב.
javac -version
- מריצים את פקודת ה-javac הבאה:
javac -d . -classpath ./lib/expressions-1.0.0.jar:./lib/message-flow-1.0.0.jar:. callout/src/main/java/JavaProperties.java
- יוצרים קובץ JAR:
jar -cvf edge-custom-policy-java-properties.jar ./com/apigeesample/JavaProperties.class
- מעתיקים את קובץ ה-JAR לספרייה apiproxy/resources/java. זה המיקום הנדרש לקובצי JAR שרוצים לפרוס באמצעות שרת proxy.
cp edge-custom-policy-java-properties.jar apiproxy/resources/java
פריסה של ה-proxy והתקשרות אליו
סקריפט פריסה מסופק בספרייה ./java-properties. אבל לפני שמריצים אותו, צריך לבצע הגדרה מהירה.
- cd אל
api-platform-samples/doc-samples/java-properties - אם עוד לא עשיתם את זה, פותחים את הקובץ
../../setup/setenv.shועורכים אותו לפי ההוראות עם פרטי החשבון שלכם ב-Apigee: שם המשתמש (כתובת האימייל שמשויכת לחשבון), שם הארגון והדומיין שבו אתם משתמשים כדי לבצע קריאות לניהול API. לדוגמה, בדומיין Edge cloud, הדומיין הואhttps://api.enterprise.apigee.com, אבל יכול להיות שהדומיין שלכם יהיה שונה אם אתם משתמשים ב-Edge Private Cloud. - שומרים את קובץ ה-
setenv.sh. - מריצים את סקריפט הפריסה:
./deploy.sh
- אם הפריסה מצליחה, מפעילים את הסקריפט של הפונקציה:
./invoke.sh
סקריפט ההפעלה קורא לפקודת cURL שנראית כך:
curl http://$org-$env.$api_domain/java-properties
ה-Proxy מחזיר את הכותרת:
X-PROPERTY-HELLO: WORLD!. חשוב לזכור שבמדיניות הוספנו צמד של שם/ערך מאפיין"prop/WORLD!". הקריאה ל-Java מאחזרת את הערך"WORLD!"ומגדירה אותו בכותרת שנקראתX-PROPERTY-HELLO:messageContext.getMessage().setHeader("X-PROPERTY-HELLO", this.properties.get("prop"));