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

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

ExecutionError

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

steps.javacallout.ExecutionError

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

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

สาเหตุ

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

การวินิจฉัย

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

  2. ตรวจสอบนโยบาย JavaCallout และทรัพยากรที่ใช้ ในตัวอย่างข้างต้น นโยบาย JavaCallout ใช้ทรัพยากรชื่อ hello.jar ดังที่แสดงด้านล่าง

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

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

  5. ทําการเรียก API โดยการติดตั้งใช้งานพร็อกซี API เป็นการแก้ไขใหม่

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

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

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

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

ความละเอียด

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

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

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

  3. บันทึกและติดตั้งใช้งานพร็อกซี API เป็นการแก้ไขใหม่