אתם מציגים את מסמכי התיעוד של Apigee Edge.
לעיון במאמרי העזרה של Apigee X. מידע
מהו יתרונות מרכזיים של Java?
אם זו הפעם הראשונה שאתם משתמשים בתוספי יתרונות מרכזיים ב-Java, מומלץ להתחיל עם המאמר איך יוצרים יתרונות מרכזיים של Java.
טיפול בשגיאות בהסבר על Java
כשכותבים יתרונות מרכזיים של Java, כדאי לבצע טיפול בשגיאות בהתאמה אישית בקוד Java. לדוגמה, ייתכן שתרצו להחזיר הודעות שגיאה וכותרות בהתאמה אישית או להגדיר משתני זרימה עם פרטי שגיאה בתהליך ה-Proxy ב-Edge.
נבחן דוגמה פשוטה להסבר על Java שממחישה דפוסים בסיסיים של טיפול בשגיאות בהתאמה אישית. הדוגמה מחזירה הודעת שגיאה מותאמת אישית כאשר מתרחשת חריגה. הוא גם מכניס את דוח הקריסות של השגיאות במשתנה זרימה, שיכול להיות שיטה שימושית לניפוי באגים.
הורדת הפרויקט
כדי לפשט את הדברים, אפשר להוריד את הפרויקט הזה ממאגר api-platform-samples של Apigee ב-GitHub.
- מורידים או משכפלים api-platform-samples למערכת שלכם.
- בטרמינל או בעורך קוד לבחירתכם, נכנסים לפרויקט
api-platform-samples/doc-samples/java-error
.
קוד Java לדוגמה
דפוסי הטיפול בשגיאות הם פשוטים. אפשר להגדיר משתני זרימה בהקשר הנוכחי של הזרימה ב-Edge באמצעות ה-method messageContext.setVariable()
. כדי לקבל מידע מותאם אישית על השגיאה, צריך ליצור ממנה מכונת ExecutionResult
ו-methods של קריאה כדי להגדיר את תגובת השגיאה ואת הכותרות.
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 com.apigee.flow.execution.Action; import org.apache.commons.lang.exception.ExceptionUtils; public class JavaError implements Execution { public ExecutionResult execute(MessageContext messageContext, ExecutionContext executionContext) { try { String name = messageContext.getMessage().getHeader("username"); if (name != null && name.length()>0) { messageContext.getMessage().setContent("Hello, " + name + "!"); messageContext.getMessage().removeHeader("username"); } else { throw new RuntimeException("Please specify a name parameter!"); } return ExecutionResult.SUCCESS; } catch (RuntimeException ex) { ExecutionResult executionResult = new ExecutionResult(false, Action.ABORT); //--Returns custom error message and header executionResult.setErrorResponse(ex.getMessage()); executionResult.addErrorResponseHeader("ExceptionClass", ex.getClass().getName()); //--Set flow variables -- may be useful for debugging. messageContext.setVariable("JAVA_ERROR", ex.getMessage()); messageContext.setVariable("JAVA_STACKTRACE", ExceptionUtils.getStackTrace(ex)); return executionResult; } } }
הידור הקוד באמצעות Maven
הפרויקט הוגדר כך שתוכלו להדר באמצעות Maven. אם ברצונך להשתמש
ב-javac
, נכלול גם דוגמה.
- חשוב לוודא ש-Maven מותקנת במכשיר:
mvn -version
- מריצים את הסקריפט
java-error/buildsetup.sh
. הסקריפט הזה מתקין את יחסי התלות הנדרשים של JAR במאגר Maven. - cd לספרייה
java-error/callout
. - הרצת Maven:
mvn clean package
- ניתן לוודא שקובץ ה-JAR
edge-custom-policy-java-error.jar
הועתק אלjava-error/apiproxy/resources/java
. זה המיקום הנדרש לקובצי JAR שרוצים לפרוס באמצעות שרת proxy.
הידור באמצעות Javac
כדי להדר את הקוד באמצעות javac
, אפשר לבצע פעולה דומה לזו (מהספרייה java-error
). קובצי ה-JAR הנדרשים זמינים בספרייה java-error/lib
.
- c ל
api-platform-samples/doc-samples/java-error
. - חשוב לוודא שהנתיב Javac (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 לספריית apiproxy/resources/Java. זה המיקום הנדרש
לקובצי JAR שרוצים לפרוס באמצעות שרת proxy.
cp com/apigeesample/JavaProperties.class apiproxy/resources/java
פריסה וקריאה לשרת ה-proxy
סקריפט לפריסה מסופק בספרייה ./java-error
. אבל לפני שמפעילים אותו,
צריך לבצע הגדרה מהירה.
- cd ל-
api-platform-samples/doc-samples/java-error
- אם עדיין לא עשיתם זאת, פותחים את הקובץ
../../setup/setenv.sh
ועורכים אותו בהתאם לפרטי חשבון Apigee שלכם: שם המשתמש (כתובת האימייל שמשויכת לחשבון), שם הארגון והדומיין שבו אתם משתמשים לביצוע קריאות לניהול API. לדוגמה, בענן של Edge, הדומיין הואhttps://api.enterprise.apigee.com
. עם זאת, הדומיין עשוי להיות שונה אם משתמשים בענן הפרטי של Edge. - שומרים את קובץ ה-
setenv.sh
. - מריצים את סקריפט הפריסה:
./deploy.sh
- אם הפריסה מצליחה, מריצים את סקריפט ההפעלה:
./invoke.sh
סקריפט ההפעלה קורא לפקודת cURL שנראית כך:
curl http://$org-$env.$api_domain/java-error
מכיוון שהקריאה לא כוללת את פרמטר השאילתה name, קוד Java יקפיץ שגיאת זמן ריצה. שרת ה-proxy מחזיר את ההודעה והכותרת הבאות:
- הודעת שגיאה:
Please specify a name parameter!
- כותרת:
ExceptionClass: java.lang.RuntimeException