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
Nếu đang dùng thử chú thích Java lần đầu tiên, bạn nên bắt đầu bằng bài viết Cách tạo chú thích Java.
Mẫu sổ tay này minh hoạ cách tạo một chính sách JavaCallout đơn giản thực thi mã Java tuỳ chỉnh trong ngữ cảnh của một luồng proxy.
Mã mẫu có chức năng gì?
Proxy API trong mẫu này gọi một dịch vụ đích trả về một phản hồi JSON đơn giản. Chính sách Lời gọi Java được đặt trên luồng phản hồi mục tiêu. Mã Java chuyển đổi tiêu đề và nội dung của phản hồi thành chữ cái viết hoa. Đây là một ví dụ đơn giản; tuy nhiên, ví dụ này minh hoạ cách làm cho mã Java tuỳ chỉnh hoạt động trong bối cảnh của một proxy API trên Edge.
Thử mẫu
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-cookbook.
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ẽ đưa ra một ví dụ sau ví dụ về Maven.
- Đảm bảo bạn đã cài đặt Maven:
mvn -version
- Thực thi tập lệnh
java-cookbook/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-cookbool/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-cookbook.jarđã được sao chép vàojava-cookbook/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-cookbook). Các tệp JAR bắt buộc được cung cấp cho bạn trong thư mục java-cookbook/lib.
- cd đến
api-platform-samples/doc-samples/java-cookbook. - Đả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/ResponseUppercase.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/ResponseUppercase.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-cookbook. Tuy nhiên, trước khi chạy, bạn cần thiết lập nhanh.
- cd đến
api-platform-samples/doc-samples/java-cookbook - 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-cookbook/json
Phản hồi sẽ có dạng như sau:
< HTTP/1.1 200 OK < Date: Tue, 09 May 2017 20:31:08 GMT < Content-Type: APPLICATION/JSON; CHARSET=UTF-8 < Content-Length: 68 < Connection: keep-alive < Access-Control-Allow-Origin: * < ETag: W/"44-RA5ERT/MMLIK54NVBWBSZG" < X-Powered-By: APIGEE < Server: Apigee Router < * Curl_http_done: called premature == 0 * Connection #0 to host willwitman-test.apigee.net left intact {"FIRSTNAME":"JOHN","LASTNAME":"DOE","CITY":"SAN JOSE","STATE":"CA"}
Luồng proxy
Đây là ảnh chụp công cụ theo dõi cho thấy luồng của proxy:

Cấu trúc proxy
Đây là cấu trúc của proxy. Xin lưu ý rằng tệp này có chứa một tệp JAR trong thư mục apiproxy/resources/java. Bạn phải có JAR. Chúng tôi cung cấp nó cho mẫu, nhưng nếu đang thực hiện công việc tuỳ chỉnh, bạn cần tự tạo và sao chép nó vào vị trí này. Để được hướng dẫn về cách biên dịch và triển khai chú thích Java, hãy xem bài viết Cách tạo chú thích Java.
java-cookbook apiproxy java-cookbook.xml policies responseUppercase.xml proxies default.xml resources java ResponseUppercase.jar targets default.xml
Giới thiệu về mã Java
Chính sách Lệnh gọi Java sẽ chạy mã Java sau đây, mã này chuyển đổi tiêu đề phản hồi và nội dung phản hồi thành chữ hoa. Xin lưu ý rằng chương trình này sử dụng các gói dành riêng cho Apigee. Các gói này cung cấp các đối tượng và phương thức mà bạn có thể dùng để tương tác trực tiếp với quy trình proxy. Có những phương thức cho phép bạn nhận và đặt các biến luồng, tiêu đề, nội dung thông báo, v.v.
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 java.util.Set; public class ResponseUppercase implements Execution{ public ExecutionResult execute(MessageContext messageContext, ExecutionContext executionContext) { try { Set headers = messageContext.getMessage().getHeaderNames(); for (String header : headers) { String h = messageContext.getMessage().getHeader(header).toUpperCase(); messageContext.getMessage().setHeader(header, h); } String content = messageContext.getMessage().getContent(); messageContext.getMessage().setContent(content.toUpperCase()); return ExecutionResult.SUCCESS; } catch (Exception e) { return ExecutionResult.ABORT; } } }
Kiểm tra proxy mẫu
Bạn có thể mở proxy và kiểm tra các tệp. Sau đây là chính sách về Lời gọi Java. Lưu ý cách nó tham chiếu đến lớp mà chú thích thực thi và tệp JAR. Tất cả các chính sách về Lời gọi Java đều tuân theo mẫu này. Xem thêm Chính sách về chú thích Java.
<JavaCallout name="responseUppercase"> <ClassName>com.apigeesample.ResponseUppercase</ClassName> <ResourceURL>java://ResponseUppercase.jar</ResourceURL> </JavaCallout>