Khắc phục lỗi thời gian chạy của chính sách JavaAnnotate

Bạn đang xem tài liệu về Apigee Edge.
Chuyển đến tài liệu về Apigee X.
thông tin

ExecutionError

Mã lỗi

steps.javacallout.ExecutionError

Nội dung phản hồi lỗi

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

Nguyên nhân

Lỗi này xảy ra nếu mã Java gửi một ngoại lệ hoặc trả về null trong quá trình thực thi chính sách JavaCallout.

Chẩn đoán

  1. Bắt đầu một phiên theo dõi để ghi lại lỗi và xác định chính sách JavaCallout nào không thành công.

  2. Kiểm tra chính sách JavaCallout và tài nguyên được sử dụng. Trong ví dụ trên, chính sách JavaCallout sử dụng một tài nguyên có tên là hello.jar, như minh hoạ dưới đây:

    <JavaCallout name="hello-java">
       <ClassName>com.apigeesample.HelloJava</ClassName>
       <ResourceURL>java://hello.jar</ResourceURL>
    </JavaCallout>
    
    
  3. Ghi lại và lưu trữ ngoại lệ Java trong một biến luồng bằng cách sửa đổi mã nguồn như mô tả trong bài viết Xử lý lỗi trong Chú thích Java.

  4. Biên dịch và thay thế tài nguyên bị ảnh hưởng (tệp JAR) bằng cấu phần phần mềm Java đã cập nhật.

  5. Triển khai Proxy API dưới dạng một bản sửa đổi mới và thực hiện lệnh gọi API.

  6. Bắt đầu một phiên theo dõi khác.

  7. Lưu ý rằng có một dấu vết ngăn xếp trong biến JAVA_STACKTRACE. Dấu vết ngăn xếp liệt kê ngoại lệ thực tế, tệp nguồn Java và số dòng nơi lỗi đang được gửi.

  8. Hãy dùng thông tin này để khắc phục vấn đề trong mã Java.

  9. Trong ví dụ này, chính sách Chú thích Java không thành công do có lỗi ArithmeticException (chia cho 0) trong tệp JavaError.java ở dòng #25.

Độ phân giải

  1. Tuỳ thuộc vào ngoại lệ được gửi, hãy khắc phục vấn đề trong(các) tệp nguồn Java có liên quan. a. Trong ví dụ trên, lỗi xảy ra là do lỗi số học (chia cho 0). Chuyển đến tệp nguồn cụ thể và số dòng được biểu thị bằng dấu vết ngăn xếp.

    b. Vì bạn không thể thực hiện phép chia cho 0, nên hãy xoá toàn bộ khối else chứa dòng mã bị lỗi để giải quyết vấn đề.

  2. Thay thế tệp JAR có liên quan chứa các tệp đã sửa đổi ở cấp độ thích hợp (proxy API, môi trường hoặc tổ chức) mà tệp đó đã tồn tại trước đó.

  3. Lưu và triển khai proxy API dưới dạng bản sửa đổi mới.