Bạn đang xem tài liệu về Apigee Edge.
Chuyển đến
Tài liệu về Apigee X. thông tin
Chú thích Java là gì?
Nếu mới sử dụng chú thích Java, bạn nên bắt đầu với Cách tạo chú thích Java chú thích.
Xử lý lỗi trong Chú thích Java
Khi viết một Chú thích Java, bạn có thể muốn thực hiện xử lý lỗi tuỳ chỉnh trong mã Java của mình. Cho Ví dụ: bạn nên trả về thông báo lỗi và tiêu đề tuỳ chỉnh và/hoặc đặt các biến luồng với trong luồng proxy trên Edge.
Hãy xem qua ví dụ về Chú thích Java đơn giản minh hoạ cách xử lý lỗi tuỳ chỉnh cơ bản mẫu. Mẫu sẽ trả về một thông báo lỗi tuỳ chỉnh khi xảy ra ngoại lệ. Thẻ này cũng đặt dấu vết ngăn xếp lỗi thành 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 cửa sổ dòng lệnh hoặc trình soạn thảo 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 cạnh bằng phương thức messageContext.setVariable()
. Để trả về hàng tuỳ chỉnh
thông tin về lỗi, hãy tạo một thực thể ExecutionResult
và gọi các phương thức trên đó đến
đặt tiêu đề và phản hồi 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 rằng 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 cài đặt đoạn mã bắt buộc Các phần phụ thuộc JAR trong kho lưu trữ Maven cục bộ của bạn. - cd vào thư mục
java-error/callout
. - Thực thi Maven:
mvn clean package
- Nếu bạn muốn, hãy xác minh rằng tệp JAR
edge-custom-policy-java-error.jar
là đã sao chép vàojava-error/apiproxy/resources/java
. Đây là vị trí bắt buộc cho Tệp JAR mà bạn muốn triển khai bằng 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 như sau
tiếp theo (từ thư mục java-error
). Bạn có thể cung cấp các tệp JAR bắt buộc cho
bạn trong thư mục java-error/lib
.
- đĩa cd sang
api-platform-samples/doc-samples/java-error
. - Hãy đảm bảo 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
cho các tệp JAR mà bạn muốn triển khai bằng proxy.
cp com/apigeesample/JavaProperties.class apiproxy/resources/java
Triển khai và gọi proxy
Tập lệnh triển khai được cung cấp trong thư mục ./java-error
. Nhưng trước khi chạy quảng cáo,
bạn cần thiết lập nhanh.
- CD sang
api-platform-samples/doc-samples/java-error
- Nếu bạn chưa thực hiện, hãy mở tệp
../../setup/setenv.sh
rồi chỉnh sửa mã này được thể hiệ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 sử dụng để tạo API các cuộc gọi quản lý. Ví dụ: đối với Cloud Cloud, 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 bằng Edge Private Cloud. - Lưu tệp
setenv.sh
. - Thực thi tập lệnh triển khai:
./deploy.sh
- Nếu 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 một lệnh cURL có dạng như sau:
curl http://$org-$env.$api_domain/java-error
Bởi vì cuộc gọi không bao gồm "tên" tham số truy vấn, mã Java sẽ gửi một thời gian chạy . Proxy trả về thông báo và tiêu đề này:
- Thông báo lỗi:
Please specify a name parameter!
- Tiêu đề:
ExceptionClass: java.lang.RuntimeException