نحوه استفاده از خواص در فراخوانی جاوا

شما در حال مشاهده مستندات Apigee Edge هستید.
به مستندات Apigee X مراجعه کنید .
اطلاعات

فراخوانی جاوا چیست؟

اگر در زمینه فراخوانی‌های جاوا تازه‌کار هستید، توصیه می‌کنیم با «نحوه ایجاد یک فراخوانی جاوا» شروع کنید.

استفاده از ویژگی‌ها در فراخوانی جاوا

ویژگی‌ها به شما امکان می‌دهند جفت‌های نام/مقدار را در یک سیاست فراخوانی جاوا مشخص کنید که می‌توانید در زمان اجرا از کد جاوا به آنها دسترسی داشته باشید. شما باید برای هر ویژگی یک مقدار رشته‌ای تحت‌اللفظی مشخص کنید؛ نمی‌توانید در این عنصر به متغیرهای جریان ارجاع دهید.

بیایید یک مثال ساده از فراخوانی جاوا را که از ویژگی‌ها استفاده می‌کند، بررسی کنیم. در این مثال، ما یک پروکسی ایجاد می‌کنیم که شامل یک سیاست فراخوانی جاوا است. این سیاست از عنصر <Properties> برای مشخص کردن یک جفت نام/مقدار استفاده می‌کند. در کد جاوا، ما مقدار را بازیابی کرده و از آن برای تنظیم هدر پاسخ استفاده می‌کنیم.

دانلود پروژه

برای ساده‌تر شدن کار، می‌توانید این پروژه را از مخزن api-platform-samples آپیجی در گیت‌هاب دانلود کنید.

  1. api-platform-samples را دانلود یا روی سیستم خود کپی کنید.
  2. در یک ترمینال یا ویرایشگر کد دلخواه خود، به پروژه api-platform-samples/doc-samples/java-properties بروید.

سیاست فراخوانی جاوا

این سیاست از عنصر <Properties> استفاده می‌کند. این عنصر به شما امکان می‌دهد جفت‌های نام/مقدار را مشخص کنید. در زمان اجرا، کد جاوای شما می‌تواند به مقادیر ویژگی‌های مشخص شده در سیاست دسترسی داشته باشد، همانطور که به زودی خواهیم دید.

<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>

نمونه کد جاوا

کد جاوا برای این نمونه به شما نشان می‌دهد که چگونه یک ویژگی را که در سیاست فراخوانی جاوا مشخص شده است، بازیابی کنید. در پروژه نمونه، می‌توانید کد منبع را در java-properties/callout/src/main/java/JavaProperties.java پیدا کنید. مراحل کامپایل و استقرار این کد را بعداً در این مبحث بررسی خواهیم کرد.

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;
		}
	}
}

کد خود را با Maven کامپایل کنید

این پروژه طوری تنظیم شده است که بتوانید آن را با Maven کامپایل کنید. اگر می‌خواهید از javac استفاده کنید، یک مثال نیز اضافه خواهیم کرد.

  1. مطمئن شوید که Maven را نصب کرده‌اید:
    mvn -version
  2. اسکریپت java-properties/buildsetup.sh را اجرا کنید. این اسکریپت وابستگی‌های JAR مورد نیاز را در مخزن محلی Maven شما نصب می‌کند.
  3. با استفاده از دستور cd به دایرکتوری java-properties/callout .
  4. اجرای Maven:
    mvn clean package
  5. در صورت تمایل، تأیید کنید که فایل JAR edge-custom-policy-java-properties.jar در مسیر java-properties/apiproxy/resources/java کپی شده باشد. این مسیر، مسیر مورد نیاز برای فایل‌های JAR است که می‌خواهید با یک پروکسی مستقر کنید.

کامپایل با جاوا (اختیاری)

اگر می‌خواهید از javac برای کامپایل کد استفاده کنید، می‌توانید کاری مشابه زیر انجام دهید (از دایرکتوری java-properties ). فایل‌های JAR مورد نیاز در دایرکتوری java-properties/lib برای شما فراهم شده‌اند.

  1. با دستور cd به api-platform-samples/doc-samples/java-properties .
  2. مطمئن شوید که javac را در مسیر خود دارید.

    javac -version
  3. دستور جاواک زیر را اجرا کنید:

    javac -d . -classpath ./lib/expressions-1.0.0.jar:./lib/message-flow-1.0.0.jar:. callout/src/main/java/JavaProperties.java
  4. ایجاد یک فایل JAR:

    jar -cvf edge-custom-policy-java-properties.jar ./com/apigeesample/JavaProperties.class
  5. فایل JAR را در دایرکتوری apiproxy/resources/java کپی کنید. این مکان مورد نیاز برای فایل‌های JAR است که می‌خواهید با یک پروکسی مستقر کنید.
    cp edge-custom-policy-java-properties.jar apiproxy/resources/java

پروکسی را مستقر کرده و فراخوانی کنید

یک اسکریپت استقرار در دایرکتوری ./java-properties ارائه شده است. اما قبل از اجرای آن، باید یک تنظیم سریع انجام دهید.

  1. cd به api-platform-samples/doc-samples/java-properties
  2. اگر قبلاً این کار را نکرده‌اید، فایل ../../setup/setenv.sh را باز کنید و آن را مطابق با اطلاعات حساب Apigee خود ویرایش کنید: نام کاربری (آدرس ایمیل مرتبط با حساب شما)، نام سازمان و دامنه‌ای که برای برقراری تماس‌های مدیریت API استفاده می‌کنید. به عنوان مثال، برای Edge cloud، دامنه https://api.enterprise.apigee.com است؛ با این حال، اگر از Edge Private Cloud استفاده می‌کنید، دامنه شما ممکن است متفاوت باشد.
  3. فایل setenv.sh را ذخیره کنید.
  4. اسکریپت استقرار را اجرا کنید:
    ./deploy.sh
  5. اگر استقرار موفقیت‌آمیز بود، اسکریپت فراخوانی را اجرا کنید:
    ./invoke.sh

    اسکریپت invoke یک دستور cURL را فراخوانی می‌کند که به صورت زیر است:

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

    پروکسی، هدر را برمی‌گرداند: X-PROPERTY-HELLO: WORLD! . به یاد داشته باشید که در سیاست، ما یک جفت نام/مقدار ویژگی "prop/WORLD!" اضافه کردیم. فراخوانی جاوا مقدار "WORLD!" را بازیابی می‌کند و آن را در هدری به نام X-PROPERTY-HELLO قرار می‌دهد:

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