Cách sử dụng các thuộc tính trong chú thích Java

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 chưa quen với chú thích Java, bạn nên bắt đầu với Cách tạo chú thích Java.

Sử dụng thuộc tính trong chú thích Java

Các thuộc tính cho phép bạn chỉ định các cặp tên/giá trị trong chính sách chú thích Java mà bạn có thể truy cập qua mã Java trong thời gian chạy. Bạn phải chỉ định một giá trị chuỗi cố định cho mỗi thuộc tính; bạn không thể tham chiếu các biến luồng trong phần tử này.

Hãy cùng xem một ví dụ về chú thích Java đơn giản có sử dụng các thuộc tính. Trong ví dụ này, chúng tôi tạo một proxy có chính sách chú thích Java. Chính sách này sử dụng phần tử <Properties> để chỉ định một cặp tên/giá trị. Trong mã Java, chúng ta truy xuất giá trị và sử dụng giá trị đó để đặt tiêu đề phản hồi.

Tải dự án xuống

Để đơn giản hoá mọi thứ, bạn có thể tải dự án này xuống qua kho lưu trữ api-platform-samples của Apigee trên GitHub.

  1. Tải hoặc sao chép api-platform-samples vào hệ thống của bạn.
  2. Trong một thiết bị đầu cuối 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-properties.

Chính sách chú thích Java

Chính sách này sử dụng phần tử <Properties>. Phần tử này cho phép bạn chỉ định cặp tên/giá trị. Trong thời gian chạy, mã Java của bạn có thể truy cập vào các giá trị của các thuộc tính được chỉ định trong chính sách, như chúng ta sẽ thấy nội dung sau đây.

<JavaCallout name="java-callout">         
    <ClassName>com.apigeesample.JavaProperties</ClassName>         
    <ResourceURL>java://edge-custom-policy-java-properties.jar</ResourceURL>         
    <Properties>              
        <Property name="prop">WORLD!</Property>             
    </Properties> 
</JavaCallout>

Mã Java mẫu

Mã Java cho mẫu này cho bạn biết cách truy xuất thuộc tính được chỉ định trong chính sách chú thích Java. Trong dự án mẫu, bạn có thể tìm thấy mã nguồn trong java-properties/callout/src/main/java/JavaProperties.java. Trong chủ đề này, chúng tôi sẽ hướng dẫn các bước biên dịch và triển khai mã này ở phần sau.

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.Map;

public class JavaProperties implements Execution {

	private Map <String,String> properties; // read-only

	public JavaProperties(Map <String,String> properties) {
	        this.properties = properties;
	}

	public ExecutionResult execute(MessageContext messageContext, ExecutionContext executionContext) {

		try {

		    messageContext.getMessage().setHeader("X-PROPERTY-HELLO", this.properties.get("prop"));

            return ExecutionResult.SUCCESS;

		} catch (Exception e) {
			return ExecutionResult.ABORT;
		}
	}
}

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 đưa ra một ví dụ.

  1. Hãy đảm bảo rằng bạn đã cài đặt Maven:
    mvn -version
    
  2. Thực thi tập lệnh java-properties/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ộ.
  3. cd vào thư mục java-properties/callout.
  4. Thực thi Maven:
    mvn clean package
    
  5. Nếu muốn, hãy xác minh rằng tệp JAR edge-custom-policy-java-properties.jar đã được sao chép vào java-properties/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.

Biên dịch bằng javac (không bắt buộc)

Nếu muốn sử dụng javac để biên dịch mã, bạn có thể làm tương tự như sau (trong thư mục java-properties). Các tệp JAR bắt buộc sẽ được cung cấp cho bạn trong thư mục java-properties/lib.

  1. cd sang api-platform-samples/doc-samples/java-properties.
  2. Hãy đảm bảo bạn có javac trong đường dẫn của mình.

    javac -version
    
  3. Thực thi lệnh javac sau đây:

    javac -d . -classpath ./lib/expressions-1.0.0.jar:./lib/message-flow-1.0.0.jar:. callout/src/main/java/JavaProperties.java
    
  4. Tạo tệp JAR:

    jar -cvf edge-custom-policy-java-properties.jar ./com/apigeesample/JavaProperties.class
  5. 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 edge-custom-policy-java-properties.jar 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-properties. Tuy nhiên, trước khi chạy, bạn cần thiết lập nhanh.

  1. cd sang api-platform-samples/doc-samples/java-properties
  2. Nếu bạn chưa làm việc này, hãy mở tệp ../../setup/setenv.sh và chỉnh sửa tệp như được nêu trong thông tin tài khoản Apigee của bạn: tên người dùng (địa chỉ email 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 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 sử dụng Edge Private Cloud.
  3. Lưu tệp setenv.sh.
  4. Thực thi tập lệnh triển khai:
    ./deploy.sh
    
  5. 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 sẽ gọi một lệnh cURL có dạng như sau:

    curl  http://$org-$env.$api_domain/java-properties
    

    Proxy trả về tiêu đề: X-PROPERTY-HELLO: WORLD!. Hãy nhớ rằng trong chính sách này, chúng tôi đã thêm cặp tên/giá trị thuộc tính "prop/WORLD!". Chú thích Java truy xuất giá trị "WORLD!" và đặt giá trị đó trong tiêu đề có tên là X-PROPERTY-HELLO:

    messageContext.getMessage().setHeader("X-PROPERTY-HELLO", this.properties.get("prop"));