איך יוצרים נכס יתרונות מרכזיים ב-Java

מוצג המסמך של Apigee Edge.
עוברים אל מסמכי תיעוד של Apigee X.
מידע

מהו יתרונות מרכזיים של Java?

ב-Apigee Edge יש מגוון של כללי מדיניות שעונים על דרישות ניהול נפוצות של API, כמו אבטחה, טרנספורמציה של נתונים, ניהול תעבורת נתונים ועוד.

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

לרשימת הגרסאות הנתמכות של Java, ראה נתמכות והגרסאות הנתמכות.

.

איך משתמשים בקוד Java בשרת proxy?

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

מתי כדאי להשתמש בהסבר על Java?

נבחן מצבים שבהם נכסי יתרונות מרכזיים של Java שימושיים, ומצבים שבהם כדאי לשקול גישות אחרות.

קודם כל, גישות חלופיות

לפני השימוש בהסבר על Java, שימו לב שיש גישות חלופיות במקום זאת. לדוגמה:

  • לביצוע פעולות פשוטות, כמו קריאות ל-HTTP API לשירותים מרוחקים, מומלץ להשתמש ב המדיניות בנושא ServiceCallout לפרטים, ראו מדיניות בנושא יתרונות מרכזיים לשירות.
  • באינטראקציות פשוטות יחסית עם תוכן ההודעות, כמו שינוי או חילוץ כותרות, פרמטרים או תוכן הודעות של HTTP, אפשר להשתמש בשפות JavaScript או Python.

מה אפשר לעשות בקוד Java

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

  • בדיקה או מניפולציה של הודעות של בקשות או תשובות
  • קבלה והגדרה של משתני זרימה. אפשר להשתמש בשיטות Java כדי לגשת למשתני זרימה של Edge. כדי לגשת למידע של Key Value Map (KVM), צריך להשתמש במדיניות KVM, להקצות ערכי KVM למשתני זרימה, ואז אפשר לגשת למשתני הזרימה בהסבר על Java.
  • התקשרות לשירותים חיצוניים
  • העלאת שגיאות
  • ביצוע מניפולציות על הודעות שגיאה וקודי סטטוס

מה אי אפשר לעשות ב-Java קוד

רוב קריאות המערכת אסורות. אי אפשר:

  • הגדרת מערכת הקבצים הפנימית לקריאה או כתיבה. המשמעות היא שאתם לא יכולים להשתמש חבילות Java לקריאה/כתיבה במערכות קבצים פנימיות; אבל אפשר ליצור שיחות מרחוק.
  • קבלת מידע על התהליך הנוכחי, רשימת התהליכים או ניצול המעבד (CPU)/זיכרון ב- במחשב.
  • נכנסים לקוד המקור ב-'expressions-1.0.0.jar' וב-'message-flow-1.0.0.jar'.

למרות שקריאות מסוימות כאלה עשויות לפעול, הן לא נתמכות ויושבתו באופן פעיל בכתובת בכל שלב. יש להימנע מביצוע קריאות כאלה בקוד שלכם.

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

שלום להסבר על Java

בואו נבחן דוגמה בסיסית להסבר על Java בפורמט 'שלום עולם'. בדוגמה הזאת אנחנו יוצרים שרת Proxy פשוט עם הסבר Java שמחזיר 'שלום עולם' תשובה. שרת ה-proxy יכול להחזיר כתובת מבין שתי תגובות אפשריות:

  • אם מעבירים בשדה 'username' עם הכותרת "name". ערך, שרת ה-proxy מחזיר:

    Hello, <name>!
    
  • אם משמיטים את הכותרת, שרת ה-proxy רק מחזיר:

    "Hello, Guest!"
    

הורדת הפרויקט לתחילת הפעולה

כדי לפשט את הדברים, יש לנו פרויקט בסיסי שהוכן עבורכם ב-GitHub ב-Apigee api-platform-samples.

  1. מורידים או משכפלים api-platform-samples למערכת שלכם.
  2. בטרמינל או בעורך קוד שבחרתם, עוברים אל פרויקט אחד (api-platform-samples/doc-samples/java-hello).

כתיבת קוד Java

  1. פותחים את קובץ המקור של Java: java-hello/callout/src/main/java/HelloJava.java. הקובץ הזה הוא גרסת שלד של המחלקה הראשית של Java שנטמיע. הנכסים המיובאים נדרשות חבילות בשביל קוד ההסבר של Edge Java. הכיתות האלה מספקות שיטות שמאפשרות כדי לגשת להקשר ההפעלה של שרת ה-proxy. נסביר לכם את השלבים להידור ולפריסה את הקוד הזה בהקדם.
    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;
    
    
    public class HelloJava implements Execution {
    
            public ExecutionResult execute(MessageContext messageContext, ExecutionContext executionContext) {
                    
                    try {
    
                            // Your code here.
                
                return ExecutionResult.SUCCESS;
    
                    } catch (Exception e) {
                            return ExecutionResult.ABORT;
                    }
            }
    
    }
    
  2. מחליפים את השורה // Your code here עם ההערה בקוד הבא:

    String name = messageContext.getMessage().getHeader("username");
    
    if (name != null && name.length()>0) {
            messageContext.getMessage().setContent("Hello, " + name + "!");
            messageContext.getMessage().removeHeader("username");
    } else {
            messageContext.getMessage().setContent("Hello, Guest!");
    }
    
  3. שומרים את הקובץ.


הידור הקוד באמצעות Maven

הפרויקט הוגדר כך שתוכלו להדר באמצעות Maven. אם רוצים להשתמש javac, נכלול דוגמה אחרי הדוגמה של Maven.

  1. חשוב לוודא ש-Maven מותקנת במכשיר:

    mvn -version
    
  2. מריצים את הסקריפט java-hello/buildsetup.sh. הסקריפט הזה מתקין את יחסי תלות של JAR במאגר Maven.
  3. cd לספרייה java-hello/callout.
  4. ביצוע Maven:

    mvn clean package
    
  5. ניתן לוודא שקובץ ה-JAR edge-custom-policy-java-hello.jar הועתק אל java-hello/apiproxy/resources/java. זה המיקום הנדרש עבור קובצי JAR שרוצים לפרוס באמצעות שרת proxy.

הידור באמצעות Javac (אופציונלי)

בקטע הקודם, תיצרו באופן אוטומטי את קובץ ה-Java JAR הנדרש באמצעות פקודת Maven. לחלופין, אם ברצונך להשתמש ב-javac כדי להדר את הקוד, יש לך אפשרות לעשות זאת משהו שדומה לזה (מהספרייה java-hello). הדרישות קובצי JAR זמינים בספרייה java-hello/lib.

  1. c לapi-platform-samples/doc-samples/java-hello.
  2. חשוב לוודא שהנתיב Javac (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/HelloJava.java
    
    הפעולה הזו יוצרת com/apigeesample/HelloJava.class.
  4. יוצרים קובץ JAR שמכיל את המחלקה שעברה הידור ספריית apiproxy/resources/java. זה המיקום הנדרש עבור JAR הקבצים שרוצים לפרוס באמצעות שרת proxy. כדי לעשות את זה, אפשר להריץ את הפקודה הבאה: בספרייה java-hello (חשוב לזכור את הנקודה שבסוף).

    jar cvf apiproxy/resources/java/edge-custom-policy-java-hello.jar -C com .
    

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

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

  1. cd ל-api-platform-samples/doc-samples/java-hello
  2. אם עדיין לא עשית זאת, עליך לפתוח את הקובץ ../../setup/setenv.sh ולערוך אותו כפי שמצוין בפרטי חשבון Apigee שלך: שם המשתמש שלך (כתובת האימייל) שמשויך לחשבון שלך), שם הארגון והדומיין שמשמש אותך ליצירת API שיחות ניהול. לדוגמה, בענן של Edge, הדומיין הוא https://api.enterprise.apigee.com; אבל הדומיין שלכם עשוי להיות שונה באמצעות ענן פרטי של Edge.
  3. שומרים את קובץ ה-setenv.sh.
  4. מריצים את סקריפט הפריסה:

    ./deploy.sh
    
  5. אם הפריסה מצליחה, מריצים את סקריפט ההפעלה:

    ./invoke.sh
    

    סקריפט ההפעלה קורא לפקודת cURL שנראית כך:

    curl  http://$org-$env.$api_domain/java-hello -H "username:Will"
    

    שמחזירה את ההודעה "Hello, William!

    אפשר לערוך את הסקריפט invoke.sh כדי לשנות את השם, או אם משנים את קריאה ל-cURL להסרת הכותרת, ואז הפקודה מחזירה 'שלום, אורח!'

מידע על שרת ה-proxy

נבדוק במהירות את כללי המדיניות שנעשה בהם שימוש בשרת ה-proxy הזה. שימו לב למדיניות נמצאת בתהליך ה-Proxy ולמה.

המדיניות להקצאת הודעות

המדיניות 'הקצאת הודעות' מצורפת לתהליך הבקשה של ProxyEndpoint. הוא מעתיק את כותרת שם המשתמש מהבקשה ומקצה אותה לתגובה. הפעולה הזו מאפשרת מדיניות ההסבר של Java, שמצורפת לתהליך התגובה, כדי לגשת לכותרת שם המשתמש וליצור גוף תשובה מותאם אישית באמצעות הערך של הכותרת הזו.

<AssignMessage async="false" continueOnError="false" enabled="true" name="CopyHeader">     
    <DisplayName>CopyHeader</DisplayName>     
    <Copy source="request">         
        <Headers>             
          <Header name="username"/>         
        </Headers>     
    </Copy>     
    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>     
    <AssignTo createNew="false" transport="http" type="response"/> 
</AssignMessage>

המדיניות בנושא יתרונות מרכזיים של Java

המדיניות של תוסף היתרונות המרכזיים של Java מצורפת לתהליך התגובה. הסיבה לכך היא קוד Java בהתאמה אישית מבצע שינויים בכותרות של התשובה ובהודעה. שם המחלקה של המדיניות מציין את המחלקה הראשית שמופעלת על ידי המדיניות. הרכיב ResourceURL הוא של קובץ ה-JAR שיצרתם והוספתם לספריית resources/java של שרת proxy.

<JavaCallout name="hello-java">         
    <ClassName>com.apigeesample.HelloJava</ClassName>         
    <ResourceURL>java://edge-custom-policy-java-hello.jar</ResourceURL> 
</JavaCallout>

כל מה שצריך לדעת לגבי הסבר על Java

כמה דברים שחשוב לדעת לגבי הטמעת יתרונות מרכזיים של Java:

  • מייבאת כיתות מ-com.apigee.flow.execution וגם חבילות com.apigee.flow.message. צריך לכלול את החבילות האלה בקובץ ה-JAR נארזת ונפרסת. אפשר להעלות את ה-Java JAR דרך שרת ה-Proxy של ממשק המשתמש לניהול או להוסיף אותו בספרייה /resources/java בשרתי proxy ל-API שאתם מפתחים באופן מקומי.
  • הטמעת ממשק הביצוע. כל קוד Java שמופעל דרך שרת proxy ל-API להטמיע את הביצוע.
  • המדיניות בנושא יתרונות מרכזיים של Java לא מכילה קוד בפועל. במקום זאת, המדיניות בנושא יתרונות מרכזיים של Java מפנה 'משאב' של Java, שאותו צריך לארוז ב-JAR.
  • שמות חבילה שיש להימנע מהם: אין להשתמש ב-io.apigee או com.apigee כשם חבילות בהסברים על Java. אלה שמורים ומשמשים את מודולים אחרים של Apigee.
  • אם נכס היתרונות המרכזיים של Java מסתמך על ספריות נוספות של צד שלישי שארוזות כ-JAR עצמאי ואז להציב את קובצי ה-JAR האלה גם בספרייה /resources/java ולוודא שהם נטענים כמו שצריך בזמן הריצה.
  • אם יש כמה JAR, פשוט מוסיפים אותם כמשאבים נוספים. לא צריך משנים את הגדרת המדיניות כך שיתייחס לקובצי JAR נוספים. מכניסים אותם /resources/java מספיק.
  • מידע נוסף על העלאת קובצי Java JAR זמין במאמר קובצי משאבים.