คุณกำลังดูเอกสารประกอบของ 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
รูปแบบการจัดการข้อผิดพลาดนั้นตรงไปตรงมา คุณตั้งค่าตัวแปรโฟลว์ในบริบทโฟลว์ 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
สคริปต์นี้จะติดตั้งทรัพยากร 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 เช่น โดเมนสำหรับ Edge Cloud คือ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 จึงแสดงข้อผิดพลาดรันไทม์ พร็อกซีจะแสดงข้อความและส่วนหัวนี้
- ข้อความแสดงข้อผิดพลาด:
Please specify a name parameter!
- ส่วนหัว:
ExceptionClass: java.lang.RuntimeException