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.
Truy cập vào tài liệu 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ề giá trị 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 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 phần Xử lý lỗi trong lệnh gọi 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 API Proxy 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. Xin 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ê ngoại lệ thực tế, tệp nguồn Java và số dòng mà 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 JavaCallout không thành công do ArithmeticException (phép chia cho 0) trong tệp JavaError.java ở dòng số 25.

Độ phân giải

  1. Tuỳ thuộc vào ngoại lệ được đưa 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ụ minh hoạ ở trên, vấn đề là do lỗi số học (phép chia cho 0). Chuyển đến tệp nguồn và số dòng cụ thể do dấu vết ngăn xếp chỉ ra.

    b. Vì bạn không thể thực hiện phép chia cho 0, 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), nơi tệp đó từng tồn tại.

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