איך משתמשים במאפיינים ב-JavaCallout

הדף הזה רלוונטי ל-Apigee ול-Apigee Hybrid.

לעיון במסמכי התיעוד של Apigee Edge

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

אם אתם חדשים ב-JavaCallouts, מומלץ להתחיל עם איך ליצור Java callout.

שימוש במאפיינים במדיניות JavaCallout

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

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

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

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

  1. מורידים או משכפלים את api-platform-samples למערכת.
  2. במסוף או בכלי לעריכת קוד לפי בחירתכם, עוברים לפרויקט api-platform-samples/doc-samples/java-properties.

המדיניות JavaCallout

המדיניות משתמשת ברכיב <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 בדוגמה הזו מראה איך לאחזר נכס שצוין במדיניות JavaCallout. בפרויקט לדוגמה, קוד המקור נמצא בתיקייה 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. הדרך הכי פשוטה לפרוס את ה-proxy היא לארוז אותו בקובץ ZIP ולהעלות את חבילת ה-proxy לסביבה בארגון Apigee. מידע נוסף זמין במאמר בנושא יצירת proxy ל-API. חשוב להשתמש באפשרות העלאת חבילת שרת proxy. אפשר לעיין גם ב טיפים וטריקים להעלאת proxy ל-API בחבילת proxy בקהילת Apigee.
  3. אחרי שפורסים את ה-proxy, מנסים להתקשר אליו:
    curl  https://$HOSTNAME/java-properties

    ה-Proxy מחזיר את הכותרת: X-PROPERTY-HELLO: WORLD!. חשוב לזכור שבמדיניות הוספנו צמד של שם/ערך מאפיין "prop/WORLD!". המדיניות JavaCallout מאחזרת את הערך "WORLD!" ומגדירה אותו בכותרת שנקראת X-PROPERTY-HELLO:

    messageContext.getMessage().setHeader("X-PROPERTY-HELLO", this.properties.get("prop"));