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
Chú thích Java là gì?
Nếu mới làm quen với chú thích Java, bạn nên bắt đầu bằng bài viết Cách tạo chú thích Java.
Xử lý lỗi trong Lệnh gọi Java
Khi viết một Lời gọi Java, bạn có thể muốn thực hiện quy trình xử lý lỗi tuỳ chỉnh trong mã Java. Ví dụ: bạn có thể muốn trả về các thông báo và tiêu đề lỗi tuỳ chỉnh và/hoặc đặt các biến luồng bằng thông tin lỗi trong luồng proxy trên Edge.
Hãy xem qua một ví dụ đơn giản về Lệnh gọi Java minh hoạ các mẫu xử lý lỗi tuỳ chỉnh cơ bản. Mẫu này trả về một thông báo lỗi tuỳ chỉnh khi xảy ra một ngoại lệ. Thao tác này cũng đặt dấu vết ngăn xếp lỗi vào một biến luồng. Đây có thể là một kỹ thuật gỡ lỗi hữu ích.
Tải dự án xuống
Để đơn giản hoá, bạn có thể tải dự án này xuống từ kho lưu trữ api-platform-samples của Apigee trên GitHub.
- Tải xuống hoặc sao chép api-platform-samples vào hệ thống của bạn.
- Trong một cửa sổ dòng lệnh hoặc trình chỉnh sửa mã mà bạn chọn, hãy chuyển đến dự án
api-platform-samples/doc-samples/java-error.
Mã Java mẫu
Các mẫu xử lý lỗi rất đơn giản. Bạn có thể đặt các biến luồng trong ngữ cảnh luồng Edge hiện tại bằng phương thức messageContext.setVariable(). Để trả về thông tin lỗi tuỳ chỉnh, hãy tạo một thực thể ExecutionResult và gọi các phương thức trên thực thể đó để đặt phản hồi và tiêu đề lỗi.
package com.apigeesample; import com.apigee.flow.execution.ExecutionContext; import com.apigee.flow.execution.ExecutionResult; import com.apigee.flow.execution.spi.Execution; import com.apigee.flow.message.MessageContext; import com.apigee.flow.execution.Action; import org.apache.commons.lang.exception.ExceptionUtils; public class JavaError implements Execution { public ExecutionResult execute(MessageContext messageContext, ExecutionContext executionContext) { try { String name = messageContext.getMessage().getHeader("username"); if (name != null && name.length()>0) { messageContext.getMessage().setContent("Hello, " + name + "!"); messageContext.getMessage().removeHeader("username"); } else { throw new RuntimeException("Please specify a name parameter!"); } return ExecutionResult.SUCCESS; } catch (RuntimeException ex) { ExecutionResult executionResult = new ExecutionResult(false, Action.ABORT); //--Returns custom error message and header executionResult.setErrorResponse(ex.getMessage()); executionResult.addErrorResponseHeader("ExceptionClass", ex.getClass().getName()); //--Set flow variables -- may be useful for debugging. messageContext.setVariable("JAVA_ERROR", ex.getMessage()); messageContext.setVariable("JAVA_STACKTRACE", ExceptionUtils.getStackTrace(ex)); return executionResult; } } }
Biên dịch mã bằng Maven
Dự án được thiết lập để bạn có thể biên dịch bằng Maven. Nếu bạn muốn sử dụng javac, chúng tôi cũng sẽ cung cấp một ví dụ.
- Đảm bảo bạn đã cài đặt Maven:
mvn -version
- Thực thi tập lệnh
java-error/buildsetup.sh. Tập lệnh này sẽ cài đặt các phần phụ thuộc JAR bắt buộc trong kho lưu trữ Maven cục bộ. - cd đến thư mục
java-error/callout. - Thực thi Maven:
mvn clean package
- Nếu muốn, hãy xác minh rằng tệp JAR
edge-custom-policy-java-error.jarđã được sao chép vàojava-error/apiproxy/resources/java. Đây là vị trí bắt buộc đối với các tệp JAR mà bạn muốn triển khai bằng một proxy.
Biên dịch bằng javac
Nếu muốn sử dụng javac để biên dịch mã, bạn có thể làm điều gì đó tương tự như sau (từ thư mục java-error). Các tệp JAR bắt buộc được cung cấp cho bạn trong thư mục java-error/lib.
- cd đến
api-platform-samples/doc-samples/java-error. - Đảm bảo rằng bạn có javac trong đường dẫn của mình.
javac -version
- Thực thi lệnh javac sau:
javac -d . -classpath ./lib/expressions-1.0.0.jar:./lib/message-flow-1.0.0.jar:. callout/src/main/java/JavaProperties.java
- Sao chép tệp JAR vào thư mục apiproxy/resources/java. Đây là vị trí bắt buộc đối với các tệp JAR mà bạn muốn triển khai bằng một proxy.
cp com/apigeesample/JavaProperties.class apiproxy/resources/java
Triển khai và gọi proxy
Một tập lệnh triển khai được cung cấp trong thư mục ./java-error. Nhưng trước khi chạy, bạn cần thiết lập nhanh.
- cd đến
api-platform-samples/doc-samples/java-error - Nếu bạn chưa làm việc này, hãy mở tệp
../../setup/setenv.shvà chỉnh sửa tệp đó như hướng dẫn bằng thông tin tài khoản Apigee của bạn: tên người dùng (địa chỉ email được liên kết với tài khoản của bạn), tên tổ chức và miền mà bạn dùng để thực hiện các lệnh gọi quản lý API. Ví dụ: đối với đám mây Edge, miền làhttps://api.enterprise.apigee.com; tuy nhiên, miền của bạn có thể khác nếu bạn đang sử dụng Đám mây riêng tư Edge. - Lưu tệp
setenv.sh. - Thực thi tập lệnh triển khai:
./deploy.sh
- Nếu quá trình triển khai thành công, hãy thực thi tập lệnh gọi:
./invoke.sh
Tập lệnh gọi sẽ gọi một lệnh cURL có dạng như sau:
curl http://$org-$env.$api_domain/java-error
Vì lệnh gọi không bao gồm tham số truy vấn "name" nên mã Java sẽ gửi một lỗi thời gian chạy. Proxy sẽ trả về thông báo và tiêu đề sau:
- Thông báo lỗi:
Please specify a name parameter! - Tiêu đề:
ExceptionClass: java.lang.RuntimeException