আপনি Apigee Edge-এর ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন .info- তে যান।
জাভা কলআউট কী?
আপনি যদি জাভা কলআউটে নতুন হন, তাহলে আমরা আপনাকে "কীভাবে একটি জাভা কলআউট তৈরি করবেন" দিয়ে শুরু করার পরামর্শ দিই।
জাভা কলআউটে প্রোপার্টি ব্যবহার করা
প্রপার্টি আপনাকে জাভা কলআউট পলিসিতে নাম/মান জোড়া নির্দিষ্ট করার সুযোগ দেয়, যা আপনি রানটাইমে আপনার জাভা কোড থেকে অ্যাক্সেস করতে পারেন। প্রতিটি প্রপার্টির জন্য আপনাকে অবশ্যই একটি আক্ষরিক স্ট্রিং মান নির্দিষ্ট করতে হবে; এই এলিমেন্টে আপনি ফ্লো ভেরিয়েবল রেফারেন্স করতে পারবেন না।
চলুন প্রোপার্টি ব্যবহার করে একটি সহজ জাভা কলআউট উদাহরণ দেখি। এই উদাহরণে, আমরা একটি প্রক্সি তৈরি করি যাতে একটি জাভা কলআউট পলিসি অন্তর্ভুক্ত থাকে। পলিসিটি একটি নাম/মান জোড়া নির্দিষ্ট করার জন্য <Properties> এলিমেন্ট ব্যবহার করে। জাভা কোডে, আমরা মানটি গ্রহণ করি এবং এটি একটি রেসপন্স হেডার সেট করতে ব্যবহার করি।
প্রকল্পটি ডাউনলোড করুন
বিষয়টি সহজ করার জন্য, আপনি গিটহাবে থাকা Apigee api-platform-samples রিপোজিটরি থেকে এই প্রজেক্টটি ডাউনলোড করতে পারেন।
- আপনার সিস্টেমে api-platform-samples ডাউনলোড বা ক্লোন করুন।
- আপনার পছন্দের কোনো টার্মিনাল বা কোড এডিটরে,
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 ব্যবহার করতে চান, তার জন্যও আমরা একটি উদাহরণ দিয়ে দেব।
- নিশ্চিত করুন যে আপনার Maven ইনস্টল করা আছে:
mvn -version
java-properties/buildsetup.shস্ক্রিপ্টটি চালান। এই স্ক্রিপ্টটি আপনার স্থানীয় Maven রিপোজিটরিতে প্রয়োজনীয় JAR নির্ভরতাগুলি ইনস্টল করে।-
java-properties/calloutডিরেক্টরিতে যান। - Maven চালান:
mvn clean package
- আপনি চাইলে,
edge-custom-policy-java-properties.jarফাইলটিjava-properties/apiproxy/resources/javaতে কপি করা হয়েছে কিনা তা যাচাই করে নিতে পারেন। যে JAR ফাইলগুলো আপনি প্রক্সির মাধ্যমে ডেপ্লয় করতে চান, সেগুলোর জন্য এই স্থানটি আবশ্যক।
javac দিয়ে কম্পাইল করুন (ঐচ্ছিক)
আপনি যদি কোডটি কম্পাইল করার জন্য javac ব্যবহার করতে চান, তাহলে ( java-properties ডিরেক্টরি থেকে) নিচের মতো কিছু করতে পারেন। প্রয়োজনীয় JAR ফাইলগুলো java-properties/lib ডিরেক্টরিতে আপনার জন্য সরবরাহ করা আছে।
-
api-platform-samples/doc-samples/java-propertiesএ যান। - আপনার পাথে javac আছে কিনা তা নিশ্চিত করুন।
javac -version
- নিম্নলিখিত javac কমান্ডটি চালান:
javac -d . -classpath ./lib/expressions-1.0.0.jar:./lib/message-flow-1.0.0.jar:. callout/src/main/java/JavaProperties.java
- একটি JAR ফাইল তৈরি করুন:
jar -cvf edge-custom-policy-java-properties.jar ./com/apigeesample/JavaProperties.class - JAR ফাইলটি apiproxy/resources/java ডিরেক্টরিতে কপি করুন। যে JAR ফাইলগুলো আপনি প্রক্সির মাধ্যমে ডেপ্লয় করতে চান, সেগুলোর জন্য এই স্থানটি আবশ্যক।
cp edge-custom-policy-java-properties.jar apiproxy/resources/java
প্রক্সি স্থাপন করুন এবং কল করুন
./java-properties ডিরেক্টরিতে একটি ডিপ্লয় স্ক্রিপ্ট দেওয়া আছে। কিন্তু এটি চালানোর আগে, আপনাকে একটি সংক্ষিপ্ত সেটআপ করে নিতে হবে।
-
api-platform-samples/doc-samples/java-propertiesএ যান - যদি আপনি ইতিমধ্যে তা না করে থাকেন, তাহলে
../../setup/setenv.shফাইলটি খুলুন এবং আপনার Apigee অ্যাকাউন্টের তথ্য দিয়ে নির্দেশিতভাবে এটি সম্পাদনা করুন: আপনার ইউজারনেম (আপনার অ্যাকাউন্টের সাথে যুক্ত ইমেল ঠিকানা), আপনার প্রতিষ্ঠানের নাম, এবং API ম্যানেজমেন্ট কল করার জন্য আপনি যে ডোমেইনটি ব্যবহার করেন। উদাহরণস্বরূপ, Edge ক্লাউডের জন্য ডোমেইনটি হলোhttps://api.enterprise.apigee.com; তবে, আপনি যদি Edge প্রাইভেট ক্লাউড ব্যবহার করেন, তাহলে আপনার ডোমেইনটি ভিন্ন হতে পারে। -
setenv.shফাইলটি সংরক্ষণ করুন। - ডিপ্লয় স্ক্রিপ্টটি চালান:
./deploy.sh
- ডিপ্লয় সফল হলে, ইনভোক স্ক্রিপ্টটি চালান:
./invoke.sh
ইনভোক স্ক্রিপ্টটি একটি 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"));