מוצג המסמך של Apigee Edge.
עוברים אל
מסמכי תיעוד של Apigee X. מידע
מהו יתרונות מרכזיים של Java?
אם זו הפעם הראשונה שאתם משתמשים בתוספי יתרונות מרכזיים ב-Java, מומלץ להתחיל עם המאמר איך יוצרים נכסי Java יתרונות מרכזיים.
טיפול בשגיאות בהסבר על Java
כשכותבים יתרונות מרכזיים של Java, כדאי לבצע טיפול בשגיאות בהתאמה אישית בקוד Java. עבור לדוגמה, ייתכן שתרצו להחזיר הודעות שגיאה וכותרות בהתאמה אישית או להגדיר משתני זרימה עם מידע על השגיאה בתהליך ה-Proxy ב-Edge.
בואו נבחן דוגמה פשוטה 'הסבר על Java' שממחישה טיפול בסיסי בשגיאות בהתאמה אישית דפוסים. הדוגמה מחזירה הודעת שגיאה מותאמת אישית כאשר מתרחשת חריגה. הוא גם מציב דוח מקבץ שגיאות (Stacktrace), למשתנה זרימה, שיכול להיות שיטה שימושית לניפוי באגים.
הורדת הפרויקט
כדי לפשט את התהליך, אפשר להוריד את הפרויקט ממאגר api-platform-samples ב-Apigee GitHub.
- מורידים או משכפלים api-platform-samples למערכת שלכם.
- בטרמינל או בעורך קוד שבחרתם, עוברים אל
פרויקט אחד (
api-platform-samples/doc-samples/java-error
).
קוד Java לדוגמה
דפוסי הטיפול בשגיאות הם פשוטים. ניתן להגדיר משתני זרימה
הקשר לזרימת הקצה באמצעות 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
כי השיחה לא כוללת את המילה 'שם'. פרמטר של שאילתה, הקוד של Java מקפיץ סביבת זמן ריצה שגיאה. שרת ה-proxy מחזיר את ההודעה והכותרת הבאות:
- הודעת שגיאה:
Please specify a name parameter!
- כותרת:
ExceptionClass: java.lang.RuntimeException