Java কলআউটে কীভাবে প্রপার্টি ব্যবহার করতে হয়

আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন দেখুন।
তথ্য

Java কলআউট কী?

আপনি Java কলআউট সম্পর্কে নতুন হলে, আমরা সাজেস্ট করি যে কীভাবে Java কলআউট তৈরি করতে হয় নিবন্ধটি দিয়ে শুরু করুন।

Java কলআউটে প্রপার্টি ব্যবহার করা

প্রপার্টি আপনাকে জাভা কলআউট নীতিতে নাম/ভ্যালু পেয়ার নির্দিষ্ট করতে দেয় যা আপনি রানটাইমে আপনার জাভা কোড থেকে অ্যাক্সেস করতে পারেন। আপনাকে প্রতিটি প্রপার্টির জন্য একটি আক্ষরিক স্ট্রিং ভ্যালু নির্দিষ্ট করতে হবে; আপনি এই এলিমেন্টে ফ্লো ভেরিয়েবল রেফারেন্স করতে পারবেন না।

প্রপার্টি ব্যবহার করে এমন একটি সাধারণ Java কলআউট উদাহরণ দেখা যাক। এই উদাহরণে, আমরা এমন একটি প্রক্সি তৈরি করি যার মধ্যে একটি জাভা কলআউট নীতি অন্তর্ভুক্ত থাকে। নীতিটি নাম/ভ্যালু পেয়ার নির্দিষ্ট করতে <Properties> এলিমেন্ট ব্যবহার করে। Java কোডে, আমরা মানটি রিট্রিভ করি এবং এটি ব্যবহার করে একটি উত্তর হেডার সেট করি।

প্রোজেক্ট ডাউনলোড করুন

বিষয়টি সহজ করতে, আপনি GitHub-এ Apigee api-platform-samples রিপোজিটরি থেকে এই প্রোজেক্ট ডাউনলোড করতে পারেন।

  1. আপনার সিস্টেমে api-platform-samples ডাউনলোড বা ক্লোন করুন।
  2. আপনার পছন্দের টার্মিনাল বা কোড এডিটরে গিয়ে api-platform-samples/doc-samples/java-properties প্রোজেক্টে যান।

Java কল-আউট নীতি

নীতিতে <Properties> এলিমেন্ট ব্যবহার করা হয়। এই এলিমেন্ট আপনাকে নাম/ভ্যালু পেয়ার নির্দিষ্ট করতে দেয়। রানটাইমে, আপনার Java কোড, নীতিতে নির্দিষ্ট করা প্রপার্টির ভ্যালু অ্যাক্সেস করতে পারে, যেমনটি আমরা শীঘ্রই দেখতে পাব।

<JavaCallout name="java-cal>lout"    <     
   > ClassNamecom.apigeesample.Java<Properties>/ClassName    <     
    R>esourceURLjava://edge-custom-policy-java-prop<erties.jar/R>esourceURL    <     
    >Properties             < 
        Property n>ame=&q<uot;prop&>quot;WORLD!/Proper<ty         >  <  
    /Prop>erties 
/JavaCallout

নমুনা Java কোড

এই স্যাম্পেলের Java কোড থেকে আপনি জানতে পারবেন যে কীভাবে Java কলআউট নীতিতে নির্দিষ্ট করা প্রপার্টি রিট্রিভ করতে হয়। নমুনা প্রোজেক্টে, আপনি সোর্স কোডটি 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 এক্সিকিউট করুন। এই স্ক্রিপ্ট আপনার লোকাল Maven রেপোতে প্রয়োজনীয় JAR ডিপেন্ডেন্সি ইনস্টল করে।
  3. java-properties/callout ডিরেক্টরিতে cd করুন।
  4. Maven এক্সিকিউট করা:
    mvn clean package
  5. আপনি চাইলে, JAR ফাইলটি edge-custom-policy-java-properties.jar java-properties/apiproxy/resources/java-এ কপি করা হয়েছে কিনা তা যাচাই করে নিন। প্রক্সি সহ ডেপ্লয় করতে চাওয়ার JAR ফাইলের জন্য এটি হল প্রয়োজনীয় লোকেশন।

javac দিয়ে কম্পাইল করুন (ঐচ্ছিক)

আপনি কোড কম্পাইল করার জন্য javac ব্যবহার করতে চাইলে, নিম্নলিখিত (java-properties ডিরেক্টরি থেকে) ধরনের কিছু করতে পারবেন। প্রয়োজনীয় JAR ফাইলগুলি java-properties/lib ডিরেক্টরিতে আপনার জন্য দেওয়া আছে।

  1. api-platform-samples/doc-samples/java-properties-এ cd করুন।
  2. আপনার পাথে javac আছে কিনা তা নিশ্চিত করুন।

    javac -version
  3. নিম্নলিখিত javac কমান্ড এক্সিকিউট করুন:

    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. apiproxy/resources/java ডিরেক্টরিতে JAR ফাইল কপি করুন। প্রক্সি সহ ডিপ্লয় করতে চাওয়া JAR ফাইলের জন্য এই লোকেশনটি প্রয়োজন।
    cp edge-custom-policy-java-properties.jar apiproxy/resources/java

প্রক্সি ডিপ্লয় ও কল করা

./java-properties ডিরেক্টরিতে একটি ডিপ্লয় স্ক্রিপ্ট প্রদান করা হয়েছে। তবে এটি চালানোর আগে, আপনাকে দ্রুত সেট-আপ করতে হবে।

  1. api-platform-samples/doc-samples/java-properties-এ cd করুন
  2. আপনি যদি এটি এখনও না করে থাকেন, তাহলে ফাইলটি খুলুন ../../setup/setenv.sh এবং আপনার Apigee অ্যাকাউন্টের তথ্য অনুসারে এটি এডিট করুন: আপনার ইউজারনেম (আপনার অ্যাকাউন্টের সাথে যুক্ত ইমেল আইডি ), আপনার প্রতিষ্ঠানের নাম এবং API ম্যানেজমেন্ট কল করার জন্য আপনি যে ডোমেন ব্যবহার করেন। যেমন, Edge ক্লাউডের জন্য ডোমেন হল https://api.enterprise.apigee.com; তবে, আপনি Edge প্রাইভেট ক্লাউড ব্যবহার করলে আপনার ডোমেন আলাদা হতে পারে।
  3. setenv.sh ফাইলটি সেভ করুন।
  4. ডেপ্লয় স্ক্রিপ্ট এক্সিকিউট করুন:
    ./deploy.sh
  5. ডেপ্লয় করা হয়ে গেলে, ইনভোক স্ক্রিপ্ট এক্সিকিউট করুন:
    ./invoke.sh

    ইনভোক স্ক্রিপ্ট একটি cURL কমান্ড কল করে যা দেখতে এইরকম:

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

    প্রক্সি এই হেডার রিটার্ন করে: X-PROPERTY-HELLO: WORLD!. মনে রাখবেন যে আমরা নীতিতে, একটি প্রপার্টির নাম/ভ্যালু পেয়ার "prop/WORLD!" যোগ করেছি। Java কলআউট "WORLD!" ভ্যালু রিট্রিভ করে এবং X-PROPERTY-HELLO নামের হেডারে সেট করে:

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