วิธีจัดการข้อผิดพลาดของการเรียก Java

คุณกำลังดูเอกสารประกอบ Apigee Edge
ไปที่ เอกสารประกอบเกี่ยวกับ Apigee X.
ข้อมูล

ข้อความเสริมของ Java คืออะไร

หากคุณยังไม่คุ้นเคยกับไฮไลต์ของ Java เราขอแนะนำให้คุณเริ่มต้นด้วยวิธีสร้าง Java ข้อความไฮไลต์

การจัดการข้อผิดพลาดในข้อความไฮไลต์ Java

เมื่อคุณเขียนข้อความเสริม Java คุณอาจต้องการจัดการข้อผิดพลาดที่กำหนดเองในโค้ด Java สำหรับ ตัวอย่างเช่น คุณอาจต้องการแสดงข้อความแสดงข้อผิดพลาดและส่วนหัวที่กำหนดเอง และ/หรือตั้งค่าตัวแปรของโฟลว์ด้วย ในขั้นตอนพร็อกซีบน Edge

ลองมาดูตัวอย่างข้อความไฮไลต์ Java ง่ายๆ ที่แสดงให้เห็นการจัดการข้อผิดพลาดพื้นฐานแบบกำหนดเอง รูปแบบ ตัวอย่างแสดงข้อความแสดงข้อผิดพลาดที่กำหนดเองเมื่อมีข้อยกเว้นเกิดขึ้น นอกจากนี้ยังแสดง สแต็กเทรซข้อผิดพลาดลงในตัวแปรโฟลว์ ซึ่งอาจเป็นเทคนิคการแก้ไขข้อบกพร่องที่เป็นประโยชน์

ดาวน์โหลดโปรเจ็กต์

เพื่อความสะดวก คุณสามารถดาวน์โหลดโปรเจ็กต์นี้จากที่เก็บ api-platform-samples ของ Apigee ใน GitHub

  1. ดาวน์โหลดหรือโคลน api-platform-samples ลงในระบบของคุณ
  2. ในเทอร์มินัลหรือตัวแก้ไขโค้ดที่คุณเลือก ให้ไปที่ api-platform-samples/doc-samples/java-error โปรเจ็กต์

ตัวอย่างโค้ด Java

รูปแบบการจัดการข้อผิดพลาดไม่ซับซ้อน คุณสามารถตั้งค่าตัวแปรโฟลว์ใน บริบทการไหลของขอบด้วยเมธอด 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 เราจะแสดงตัวอย่างให้คุณด้วย

  1. ตรวจสอบว่าคุณได้ติดตั้ง Maven แล้ว ดังนี้
    mvn -version
    
  2. เรียกใช้สคริปต์ java-error/buildsetup.sh สคริปต์นี้จะติดตั้ง ทรัพยากร Dependency ของ 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 ที่ต้องการทำให้ใช้งานได้ด้วยพร็อกซี

คอมไพล์ด้วย Javac

หากต้องการใช้ javac เพื่อคอมไพล์โค้ด คุณสามารถใช้วิธีที่คล้ายกับ การติดตาม (จากไดเรกทอรี java-error) ไฟล์ JAR ที่จำเป็นสำหรับ คุณอยู่ในไดเรกทอรี java-error/lib

  1. CD ถึง api-platform-samples/doc-samples/java-error
  2. ตรวจสอบว่าคุณมี 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 ที่ต้องการทำให้ใช้งานได้ด้วยพร็อกซี

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

ทำให้ใช้งานได้และเรียกใช้พร็อกซี

สคริปต์การทำให้ใช้งานได้จะอยู่ในไดเรกทอรี ./java-error แต่ก่อนที่คุณจะเริ่มใช้งาน คุณต้องตั้งค่าอย่างรวดเร็ว

  1. CD ถึง api-platform-samples/doc-samples/java-error
  2. หากยังไม่ได้ดำเนินการ ให้เปิดไฟล์ ../../setup/setenv.sh และแก้ไข ตามที่ระบุด้วยข้อมูลบัญชี Apigee ของคุณ นั่นคือชื่อผู้ใช้ของคุณ (ที่อยู่อีเมล ที่เชื่อมโยงกับบัญชีของคุณ) ชื่อองค์กร และโดเมนที่คุณใช้สร้าง API การโทรเพื่อการจัดการ ตัวอย่างเช่น โดเมนสำหรับระบบคลาวด์ Edge https://api.enterprise.apigee.com; แต่โดเมนของคุณอาจแตกต่างออกไปหากคุณ โดยใช้ Edge Private Cloud
  3. บันทึกไฟล์ setenv.sh
  4. เรียกใช้สคริปต์การทำให้ใช้งานได้:
    ./deploy.sh
    
  5. หากการปรับใช้สำเร็จ ให้เรียกใช้สคริปต์เรียกใช้:
    ./invoke.sh
    

    สคริปต์การเรียกใช้จะเรียกคำสั่ง cURL ที่มีลักษณะดังนี้

    curl  http://$org-$env.$api_domain/java-error
    

    เนื่องจากในการเรียกไม่มี "ชื่อ" พารามิเตอร์การค้นหา โค้ด Java จะส่งรันไทม์ พร็อกซีจะแสดงข้อความและส่วนหัวนี้

  • ข้อความแสดงข้อผิดพลาด: Please specify a name parameter!
  • ส่วนหัว: ExceptionClass: java.lang.RuntimeException