כרגע מוצג התיעוד של Apigee Edge.
כניסה למסמכי התיעוד של
Apigee X. מידע
מהו הסבר Java?
אם זו הפעם הראשונה שאתם משתמשים בנכסי יתרונות מרכזיים ב-Java, מומלץ להתחיל עם המאמר איך יוצרים יתרונות מרכזיים של Java.
טיפול בשגיאות בהסבר Java
כשכותבים יתרונות מרכזיים ב-Java, מומלץ לטפל בשגיאות בהתאמה אישית בקוד ה-Java. לדוגמה, יכול להיות שתרצו להחזיר הודעות שגיאה וכותרות בהתאמה אישית, או להגדיר משתני זרימה עם פרטי שגיאה בזרימה של שרת ה-proxy ב-Edge.
נבחן דוגמה פשוטה לתוסף יתרונות מרכזיים ב-Java, שממחישה דפוסים בסיסיים של טיפול בשגיאות בהתאמה אישית. הדוגמה מחזירה הודעת שגיאה מותאמת אישית כאשר מתרחשת חריגה. הוא גם מוסיף את דוח הקריסות של השגיאות במשתנה זרימה, שיכול להיות שיטה שימושית לניפוי באגים.
מורידים את הפרויקט
כדי לפשט את הדברים, אפשר להוריד את הפרויקט הזה ממאגר Apigee api-platform-samples ב-GitHub.
- מורידים או משכפלים את api-platform-samples במערכת.
- במסוף או בעורך קוד לבחירתכם, עוברים אל
הפרויקט
api-platform-samples/doc-samples/java-error
.
קוד Java לדוגמה
הדפוסים לטיפול בשגיאות ברורים. אפשר להגדיר משתני זרימה בהקשר הנוכחי של הזרימה ב-Edge באמצעות השיטה messageContext.setVariable()
. כדי להחזיר פרטים של שגיאות
בהתאמה אישית, צריך ליצור מופע של ExecutionResult
ולהשתמש בו בשיטות קריאה
כדי להגדיר את תגובת השגיאה ואת הכותרות.
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
.
- cd ל-
api-platform-samples/doc-samples/java-error
. - מוודאים שיש 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 Private Cloud. - שומרים את הקובץ
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