คุณกำลังดูเอกสารประกอบ Apigee Edge
ไปที่
เอกสารประกอบเกี่ยวกับ Apigee X. ข้อมูล
ข้อความเสริมของ Java คืออะไร
หากคุณยังไม่คุ้นเคยกับไฮไลต์ของ Java เราขอแนะนำให้คุณเริ่มต้นด้วยวิธีสร้าง Java ข้อความไฮไลต์
การจัดการข้อผิดพลาดในข้อความไฮไลต์ Java
เมื่อคุณเขียนข้อความเสริม Java คุณอาจต้องการจัดการข้อผิดพลาดที่กำหนดเองในโค้ด Java สำหรับ ตัวอย่างเช่น คุณอาจต้องการแสดงข้อความแสดงข้อผิดพลาดและส่วนหัวที่กำหนดเอง และ/หรือตั้งค่าตัวแปรของโฟลว์ด้วย ในขั้นตอนพร็อกซีบน Edge
ลองมาดูตัวอย่างข้อความไฮไลต์ Java ง่ายๆ ที่แสดงให้เห็นการจัดการข้อผิดพลาดพื้นฐานแบบกำหนดเอง รูปแบบ ตัวอย่างแสดงข้อความแสดงข้อผิดพลาดที่กำหนดเองเมื่อมีข้อยกเว้นเกิดขึ้น นอกจากนี้ยังแสดง สแต็กเทรซข้อผิดพลาดลงในตัวแปรโฟลว์ ซึ่งอาจเป็นเทคนิคการแก้ไขข้อบกพร่องที่เป็นประโยชน์
ดาวน์โหลดโปรเจ็กต์
เพื่อความสะดวก คุณสามารถดาวน์โหลดโปรเจ็กต์นี้จากที่เก็บ api-platform-samples ของ Apigee ใน GitHub
- ดาวน์โหลดหรือโคลน api-platform-samples ลงในระบบของคุณ
- ในเทอร์มินัลหรือตัวแก้ไขโค้ดที่คุณเลือก ให้ไปที่
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
เราจะแสดงตัวอย่างให้คุณด้วย
- ตรวจสอบว่าคุณได้ติดตั้ง Maven แล้ว ดังนี้
mvn -version
- เรียกใช้สคริปต์
java-error/buildsetup.sh
สคริปต์นี้จะติดตั้ง ทรัพยากร Dependency ของ JAR ในที่เก็บ Maven ในเครื่อง - cd ไปยังไดเรกทอรี
java-error/callout
- ดำเนินการ Maven:
mvn clean package
- หากต้องการ ให้ตรวจสอบว่าไฟล์ JAR
edge-custom-policy-java-error.jar
เดิมคือ คัดลอกไปยังjava-error/apiproxy/resources/java
แล้ว นี่คือตำแหน่งที่จำเป็นสำหรับ ไฟล์ JAR ที่ต้องการทำให้ใช้งานได้ด้วยพร็อกซี
คอมไพล์ด้วย 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 ที่ต้องการทำให้ใช้งานได้ด้วยพร็อกซี
cp com/apigeesample/JavaProperties.class apiproxy/resources/java
ทำให้ใช้งานได้และเรียกใช้พร็อกซี
สคริปต์การทำให้ใช้งานได้จะอยู่ในไดเรกทอรี ./java-error
แต่ก่อนที่คุณจะเริ่มใช้งาน
คุณต้องตั้งค่าอย่างรวดเร็ว
- CD ถึง
api-platform-samples/doc-samples/java-error
- หากยังไม่ได้ดำเนินการ ให้เปิดไฟล์
../../setup/setenv.sh
และแก้ไข ตามที่ระบุด้วยข้อมูลบัญชี Apigee ของคุณ นั่นคือชื่อผู้ใช้ของคุณ (ที่อยู่อีเมล ที่เชื่อมโยงกับบัญชีของคุณ) ชื่อองค์กร และโดเมนที่คุณใช้สร้าง API การโทรเพื่อการจัดการ ตัวอย่างเช่น โดเมนสำหรับระบบคลาวด์ Edgehttps://api.enterprise.apigee.com
; แต่โดเมนของคุณอาจแตกต่างออกไปหากคุณ โดยใช้ Edge Private Cloud - บันทึกไฟล์
setenv.sh
- เรียกใช้สคริปต์การทำให้ใช้งานได้:
./deploy.sh
- หากการปรับใช้สำเร็จ ให้เรียกใช้สคริปต์เรียกใช้:
./invoke.sh
สคริปต์การเรียกใช้จะเรียกคำสั่ง cURL ที่มีลักษณะดังนี้
curl http://$org-$env.$api_domain/java-error
เนื่องจากในการเรียกไม่มี "ชื่อ" พารามิเตอร์การค้นหา โค้ด Java จะส่งรันไทม์ พร็อกซีจะแสดงข้อความและส่วนหัวนี้
- ข้อความแสดงข้อผิดพลาด:
Please specify a name parameter!
- ส่วนหัว:
ExceptionClass: java.lang.RuntimeException