การแก้ปัญหาข้อผิดพลาดเกี่ยวกับรันไทม์ของนโยบาย JavaScript

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

ExecutionError

รหัสข้อผิดพลาด

steps.javacallout.ExecutionError

เนื้อหาการตอบกลับข้อผิดพลาด

{
  "fault": {
    "faultstring": "Execution returned an error result",
    "detail": {
      "errorcode": "flow.execution.ExecutionReturnedFailure"
    }
  }
}

สาเหตุ

ข้อผิดพลาดนี้เกิดขึ้นหากโค้ด Java แสดงข้อยกเว้นหรือแสดงผลเป็น null ระหว่างการเรียกใช้นโยบาย JavaCallout

การวินิจฉัย

  1. เริ่มเซสชันการติดตามเพื่อบันทึกข้อผิดพลาดและระบุนโยบาย JavaScript ที่ล้มเหลว

  2. อ่านนโยบาย Javaข้อความไฮไลต์ และแหล่งข้อมูลที่ใช้ ในตัวอย่างข้างต้น นโยบาย JavaCall ใช้ทรัพยากรชื่อ hello.jar ตามที่แสดงด้านล่าง

    <JavaCallout name="hello-java">
       <ClassName>com.apigeesample.HelloJava</ClassName>
       <ResourceURL>java://hello.jar</ResourceURL>
    </JavaCallout>
    
    
  3. บันทึกและจัดเก็บข้อยกเว้น Java ในตัวแปรโฟลว์โดยการแก้ไขซอร์สโค้ด ตามที่อธิบายไว้ในการจัดการข้อผิดพลาดในข้อความไฮไลต์ Java

  4. คอมไพล์และแทนที่ทรัพยากรที่ได้รับผลกระทบ (ไฟล์ JAR) ด้วยอาร์ติแฟกต์ Java ที่อัปเดตแล้ว

  5. ทำให้พร็อกซี API ใช้งานได้เป็นเวอร์ชันใหม่และเรียก API

  6. เริ่มเซสชันการติดตามอีกครั้ง

  7. โปรดสังเกตว่ามีสแต็กเทรซอยู่ในตัวแปร JAVA_STACKTRACE สแต็กเทรซจะแสดงข้อยกเว้นจริง รวมถึงไฟล์ต้นฉบับของ Java และหมายเลขบรรทัดที่แสดงข้อผิดพลาด

  8. โปรดใช้ข้อมูลนี้เพื่อแก้ไขปัญหาในโค้ด Java

  9. ในตัวอย่างนี้ นโยบาย Javaคำขอราคาเสนอ ล้มเหลวเนื่องจาก ArithmeticException (หารด้วย 0) ในไฟล์ JavaError.java ที่บรรทัดที่ 25

ความละเอียด

  1. แก้ไขปัญหาในไฟล์ซอร์สโค้ด Java ที่เกี่ยวข้อง โดยขึ้นอยู่กับข้อยกเว้นที่แสดงขึ้น ก. ในตัวอย่างที่แสดงด้านบน ปัญหาเกิดจากข้อผิดพลาดทางคณิตศาสตร์ (การหารด้วย 0) ไปยังไฟล์ต้นฉบับและหมายเลขบรรทัดที่ระบุโดยสแต็กเทรซ

    ข. เนื่องจากคุณไม่สามารถทำการหารด้วย 0 ได้ ให้นำบล็อก "อื่นๆ ทั้งหมด" ที่มีบรรทัดโค้ดที่มีข้อผิดพลาดออกเพื่อแก้ไขปัญหา

  2. แทนที่ไฟล์ JAR ที่เกี่ยวข้องซึ่งมีไฟล์ที่แก้ไขในระดับที่เหมาะสม (พร็อกซี API, สภาพแวดล้อม หรือองค์กร) ที่มีอยู่ก่อนหน้านี้

  3. บันทึกและใช้พร็อกซี API เป็นเวอร์ชันใหม่