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 về 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 ra một ngoại lệ hoặc trả về giá trị null trong quá trình thực thi chính sách JavaAnnotation.

Chẩn đoán

  1. Bắt đầu phiên theo dõi để phát hiện lỗi và xác định chính sách Java Chú thích nào bị lỗi.

  2. Kiểm tra chính sách Chú thích Java 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 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 dấu vết ngăn xếp có trong biến JAVA_STACKTRACE. Dấu vết ngăn xếp liệt kê trường hợp ngoại lệ thực tế, tệp nguồn Java và số dòng xảy ra lỗ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 trường hợp ngoại lệ được gửi ra, 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, vấn đề là do một 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, hãy xoá khối else hoàn chỉnh có chứa dòng mã bị lỗi để giải bài toán này.

  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 một bản sửa đổi mới.