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 trả về một ngoại lệ hoặc trả về giá trị null (rỗng) trong quá trình thực thi chính sách Chú thích Java.

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 Chú thích Java nào không thành công.

  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 Chú thích Java sử dụng tài nguyên có tên hello.jar, như được hiển thị 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 biến luồng bằng cách sửa đổi mã nguồn, như mô tả trong 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 dấu vết ngăn xếp có sẵn trong biến JAVA_STACKTRACE. Dấu vết ngăn xếp liệt kê ngoại lệ trên thực tế, tệp nguồn Java và số dòng mà tại đó lỗi được tạo ra.

  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, 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 đề phát sinh là do một lỗi số học (chia cho 0). Chuyển đến tệp nguồn và số dòng cụ thể đượ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á hoàn toàn khối khác có chứa dòng mã bị lỗi để giải quyết vấn đề này.

  2. Thay thế tệp JAR liên quan chứa các tệp được sửa đổi ở cấp phù hợp (Proxy API, môi trường hoặc tổ chức), nơi tệp này 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.