איך מטפלים בשגיאות של יתרונות מרכזיים ב-Java

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

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

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

טיפול בשגיאות בהסבר על Java

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

בואו נבחן דוגמה פשוטה 'הסבר על Java' שממחישה טיפול בסיסי בשגיאות בהתאמה אישית דפוסים. הדוגמה מחזירה הודעת שגיאה מותאמת אישית כאשר מתרחשת חריגה. הוא גם מציב דוח מקבץ שגיאות (Stacktrace), למשתנה זרימה, שיכול להיות שיטה שימושית לניפוי באגים.

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

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

  1. מורידים או משכפלים api-platform-samples למערכת שלכם.
  2. בטרמינל או בעורך קוד שבחרתם, עוברים אל פרויקט אחד (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, נכלול גם דוגמה.

  1. עליכם לוודא ש-Maven מותקן במחשב שלכם:
    mvn -version
    
  2. מריצים את הסקריפט java-error/buildsetup.sh. הסקריפט הזה מתקין את יחסי תלות של JAR במאגר Maven.
  3. cd לספרייה java-error/callout.
  4. מפעילים את Maven:
    mvn clean package
    
  5. ניתן לוודא שקובץ ה-JAR edge-custom-policy-java-error.jar הועתק אל java-error/apiproxy/resources/java. זה המיקום הנדרש עבור קובצי JAR שרוצים לפרוס באמצעות שרת proxy.

הידור באמצעות Javac

אם רוצים להשתמש ב-javac כדי להדר את הקוד, אפשר לבצע פעולה דומה לזו הבא (מהספרייה java-error). קובצי ה-JAR הנדרשים סופקו עבור בספרייה java-error/lib.

  1. c לapi-platform-samples/doc-samples/java-error.
  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/JavaProperties.java
    
  4. מעתיקים את קובץ ה-JAR לספריית apiproxy/resources/Java. זה המיקום הנדרש של קובצי JAR שרוצים לפרוס באמצעות שרת proxy.

    cp com/apigeesample/JavaProperties.class apiproxy/resources/java
    

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

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

  1. cd ל-api-platform-samples/doc-samples/java-error
  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-error
    

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

  • הודעת שגיאה: Please specify a name parameter!
  • כותרת: ExceptionClass: java.lang.RuntimeException