איך להשתמש במאפיינים בנכס יתרונות מרכזיים של Java

אתם צופים במסמכי התיעוד של Apigee Edge.
כדאי לעיין במסמכי התיעוד של Apigee X.
מידע

מהי קריאה ל-Java?

אם אין לכם ניסיון עם קריאות ל-Java, מומלץ להתחיל עם המאמר איך יוצרים קריאה ל-Java.

שימוש במאפיינים בקריאה ל-Java

מאפיינים מאפשרים לציין צמדי שם/ערך במדיניות של קריאה ל-Java, שאפשר לגשת אליהם מקוד ה-Java בזמן ריצה. צריך לציין ערך מחרוזת מילולי לכל מאפיין. אי אפשר להפנות למשתני זרימה באלמנט הזה.

נסביר בעזרת דוגמה פשוטה של קריאה ל-Java שמשתמשת במאפיינים. בדוגמה הזו אנחנו יוצרים שרת proxy שכולל מדיניות של קריאה ל-Java. המדיניות משתמשת באלמנט <Properties> כדי לציין צמד של שם/ערך. בקוד Java, מאחזרים את הערך ומשתמשים בו כדי להגדיר כותרת תגובה.

הורדת הפרויקט

כדי לפשט את התהליך, אפשר להוריד את הפרויקט הזה ממאגר api-platform-samples של Apigee ב-GitHub.

  1. מורידים או משכפלים את api-platform-samples למערכת.
  2. במסוף או בכלי לעריכת קוד לפי בחירתכם, עוברים לפרויקט 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, נכלול גם דוגמה.

  1. מוודאים ש-Maven מותקן:
    mvn -version
  2. מריצים את הסקריפט java-properties/buildsetup.sh. הסקריפט הזה מתקין את יחסי התלות הנדרשים ב-JAR במאגר Maven המקומי.
  3. משתמשים בפקודה cd כדי לעבור לספרייה java-properties/callout.
  4. מריצים את Maven:
    mvn clean package
  5. אם רוצים, אפשר לוודא שקובץ ה-JAR‏ edge-custom-policy-java-properties.jar הועתק אל java-properties/apiproxy/resources/java. זה המיקום הנדרש לקובצי JAR שרוצים לפרוס באמצעות שרת proxy.

קומפילציה באמצעות javac (אופציונלי)

אם רוצים להשתמש ב-javac כדי לקמפל את הקוד, אפשר לעשות משהו דומה למה שמופיע בהמשך (מתוך הספרייה java-properties). קובצי ה-JAR הנדרשים מסופקים לכם בספרייה java-properties/lib.

  1. ‫cd אל api-platform-samples/doc-samples/java-properties.
  2. חשוב לוודא ש-javac נמצא בנתיב.

    javac -version
  3. מריצים את פקודת ה-javac הבאה:

    javac -d . -classpath ./lib/expressions-1.0.0.jar:./lib/message-flow-1.0.0.jar:. callout/src/main/java/JavaProperties.java
  4. יוצרים קובץ JAR:‏

    jar -cvf edge-custom-policy-java-properties.jar ./com/apigeesample/JavaProperties.class
  5. מעתיקים את קובץ ה-JAR לספרייה apiproxy/resources/java. זה המיקום הנדרש לקובצי JAR שרוצים לפרוס באמצעות שרת proxy.
    cp edge-custom-policy-java-properties.jar apiproxy/resources/java

פריסה של ה-proxy והתקשרות אליו

סקריפט פריסה מסופק בספרייה ./java-properties. אבל לפני שמריצים אותו, צריך לבצע הגדרה מהירה.

  1. ‫cd אל api-platform-samples/doc-samples/java-properties
  2. אם עוד לא עשיתם את זה, פותחים את הקובץ ../../setup/setenv.sh ועורכים אותו לפי ההוראות עם פרטי החשבון שלכם ב-Apigee: שם המשתמש (כתובת האימייל שמשויכת לחשבון), שם הארגון והדומיין שבו אתם משתמשים כדי לבצע קריאות לניהול API. לדוגמה, בדומיין Edge cloud, הדומיין הוא https://api.enterprise.apigee.com, אבל יכול להיות שהדומיין שלכם יהיה שונה אם אתם משתמשים ב-Edge Private Cloud.
  3. שומרים את קובץ ה-setenv.sh.
  4. מריצים את סקריפט הפריסה:
    ./deploy.sh
  5. אם הפריסה מצליחה, מפעילים את הסקריפט של הפונקציה:
    ./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"));