আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশনে যান । তথ্য
কি
Apigee নীতিমালার বাইরের অন্তর্ভুক্ত নয় এমন কাস্টম আচরণ বাস্তবায়নের জন্য জাভা ব্যবহার করতে আপনাকে সক্ষম করে। আপনার জাভা কোডে, আপনি প্রক্সি ফ্লোতে বার্তা বৈশিষ্ট্য (হেডার, ক্যোয়ারী প্যারামিটার, বিষয়বস্তু) এবং ফ্লো ভেরিয়েবল অ্যাক্সেস করতে পারেন। আপনি যদি এই নীতির সাথে শুরু করে থাকেন, তাহলে দেখুন কিভাবে একটি Java কলআউট তৈরি করতে হয় ।
জাভা সমর্থিত সংস্করণগুলির জন্য, সমর্থিত সফ্টওয়্যার এবং সমর্থিত সংস্করণগুলি দেখুন।
কখন
নির্দেশিকাগুলির জন্য, দেখুন "আমি কখন একটি জাভা কলআউট ব্যবহার করব?" কিভাবে একটি জাভা কলআউট তৈরি করতে হয় ।
সম্পর্কে
জাভা কলআউট নীতি আপনাকে ফ্লো ভেরিয়েবল পেতে এবং সেট করতে, কাস্টম লজিক চালাতে এবং ত্রুটি পরিচালনা করতে, অনুরোধ বা প্রতিক্রিয়া থেকে ডেটা বের করতে এবং আরও অনেক কিছু করতে দেয়। এই নীতি আপনাকে কাস্টম আচরণ বাস্তবায়নের অনুমতি দেয় যা অন্য কোনো মানক এজ নীতি দ্বারা আচ্ছাদিত নয়।
আপনি আপনার জাভা অ্যাপ্লিকেশানকে প্যাকেজ করতে পারেন যেকোন প্যাকেজ JAR ফাইলের সাথে। নোট করুন যে জাভা কলআউট দিয়ে আপনি কী করতে পারেন তার উপর কিছু বিধিনিষেধ রয়েছে। এই বিধিনিষেধ নীচে তালিকাভুক্ত করা হয়.নমুনা
সহজ উদাহরণ
কিভাবে একটি জাভা কলআউট তৈরি করতে হয়আপনার জাভা কোডে বৈশিষ্ট্য পুনরুদ্ধার করুন
নীতির <Property>
উপাদানটি আপনাকে একটি নাম/মান জোড়া নির্দিষ্ট করতে দেয় যা আপনি আপনার জাভা কোডে রানটাইমে পুনরুদ্ধার করতে পারেন। বৈশিষ্ট্যগুলি ব্যবহার করে এমন একটি কাজের উদাহরণের জন্য, Java কলআউটে বৈশিষ্ট্যগুলি কীভাবে ব্যবহার করবেন তা দেখুন।
জাভা কোড থেকে যে নাম দিয়ে সম্পত্তি অ্যাক্সেস করতে হবে তা নির্দিষ্ট করতে <সম্পত্তি> উপাদানের name
বৈশিষ্ট্যটি ব্যবহার করুন। <Property>
উপাদানের মান (উদ্বোধন এবং বন্ধ করার ট্যাগের মধ্যে মান) হল সেই মান যা জাভা কোড দ্বারা গৃহীত হবে। মান একটি স্ট্রিং হতে হবে; আপনি মান পেতে একটি প্রবাহ পরিবর্তনশীল উল্লেখ করতে পারবেন না।
- সম্পত্তি কনফিগার করুন. এখানে, সম্পত্তি মান হল পরিবর্তনশীল নাম
response.status.code
।<JavaCallout async="false" continueOnError="false" enabled="true" name="JavaCallout"> <DisplayName>JavaCallout</DisplayName> <ClassName>com.example.mypolicy.MyJavaCallout</ClassName> <ResourceURL>java://MyJavaCallout.jar</ResourceURL> <Properties> <Property name="source">response.status.code</Property> </Properties> </Javascript>
- আপনার জাভা কোডে, এক্সিকিউশন ক্লাস ইমপ্লিমেন্টেশনে নিম্নোক্ত কনস্ট্রাক্টরকে নিম্নরূপ প্রয়োগ করুন:
public class MyJavaCallout implements Execution{ public MyJavaCallout(Map<string, string> props){ // Extract property values from map. } ... }
আপনার জাভা কোডে ফ্লো ভেরিয়েবল সেট করুন
আপনার জাভা কোডে বার্তা প্রসঙ্গে (ফ্লো ভেরিয়েবল) কীভাবে ভেরিয়েবল সেট করবেন তার একটি পরিষ্কার বিবরণের জন্য, এই Apigee কমিউনিটি পোস্টটি দেখুন।
উপাদান রেফারেন্স
উপাদান রেফারেন্স JavaCallout নীতির উপাদান এবং বৈশিষ্ট্য বর্ণনা করে।
<JavaCallout name="MyJavaCalloutPolicy"> <ClassName>com.example.mypolicy.MyJavaCallout</ClassName> <ResourceURL>java://MyJavaCallout.jar</ResourceURL> </JavaCallout>
<JavaCallout> বৈশিষ্ট্য
<JavaCallout name="MyJavaCalloutPolicy" enabled="true" continueOnError="false" async="false" >
নিম্নলিখিত সারণী সমস্ত নীতির মূল উপাদানগুলির জন্য সাধারণ বৈশিষ্ট্যগুলি বর্ণনা করে:
বৈশিষ্ট্য | বর্ণনা | ডিফল্ট | উপস্থিতি |
---|---|---|---|
name | নীতির অভ্যন্তরীণ নাম। ঐচ্ছিকভাবে, ম্যানেজমেন্ট UI প্রক্সি এডিটরে নীতিটিকে একটি ভিন্ন, প্রাকৃতিক-ভাষা নামের সাথে লেবেল করতে | N/A | প্রয়োজন |
continueOnError | একটি নীতি ব্যর্থ হলে একটি ত্রুটি ফেরত দিতে একটি নীতি ব্যর্থ হওয়ার পরেও ফ্লো এক্সিকিউশন চালিয়ে যেতে | মিথ্যা | ঐচ্ছিক |
enabled | নীতি প্রয়োগ করতে নীতি বন্ধ করতে | সত্য | ঐচ্ছিক |
async | এই বৈশিষ্ট্যটি অবমূল্যায়ন করা হয়েছে৷ | মিথ্যা | অবচয় |
<DisplayName> উপাদান
ম্যানেজমেন্ট UI প্রক্সি এডিটরে নীতিটিকে একটি ভিন্ন, প্রাকৃতিক-ভাষা নামের সাথে লেবেল করতে name
বৈশিষ্ট্য ছাড়াও ব্যবহার করুন।
<DisplayName>Policy Display Name</DisplayName>
ডিফল্ট | N/A আপনি এই উপাদানটি বাদ দিলে, নীতির |
---|---|
উপস্থিতি | ঐচ্ছিক |
টাইপ | স্ট্রিং |
<ClassName> উপাদান
জাভা ক্লাসের নাম নির্দিষ্ট করে যা জাভা কলআউট নীতি চালানোর সময় কার্যকর করে। ক্লাসটিকে অবশ্যই <ResourceURL>
দ্বারা নির্দিষ্ট করা JAR ফাইলে অন্তর্ভুক্ত করতে হবে। কিভাবে একটি জাভা কলআউট তৈরি করতে হয় তাও দেখুন।
<JavaCallout name="MyJavaCalloutPolicy"> <ResourceURL>java://MyJavaCallout.jar</ResourceURL> <ClassName>com.example.mypolicy.MyJavaCallout</ClassName> </JavaCallout>
ডিফল্ট: | N/A |
উপস্থিতি: | প্রয়োজন |
প্রকার: | স্ট্রিং |
<সম্পত্তি> উপাদান
রানটাইমে জাভা কোড থেকে আপনি অ্যাক্সেস করতে পারেন এমন একটি সম্পত্তি নির্দিষ্ট করে। আপনাকে অবশ্যই প্রতিটি সম্পত্তির জন্য একটি আক্ষরিক স্ট্রিং মান নির্দিষ্ট করতে হবে; আপনি এই উপাদানে প্রবাহ ভেরিয়েবল উল্লেখ করতে পারবেন না। বৈশিষ্ট্যগুলি ব্যবহার করে এমন একটি কাজের উদাহরণের জন্য, Java কলআউটে বৈশিষ্ট্যগুলি কীভাবে ব্যবহার করবেন তা দেখুন।
<Properties> <Property name="propName">propertyValue</Property> </Properties>
ডিফল্ট: | কোনোটিই নয় |
উপস্থিতি: | ঐচ্ছিক |
প্রকার: | স্ট্রিং |
গুণাবলী
বৈশিষ্ট্য | বর্ণনা | ডিফল্ট | উপস্থিতি |
---|---|---|---|
নাম | সম্পত্তির নাম উল্লেখ করে। | N/A | প্রয়োজন। |
<ResourceURL> উপাদান
এই উপাদানটি Java JAR ফাইলটি নির্দিষ্ট করে যা Java কলআউট নীতি চালু হলে কার্যকর হবে।
আপনি এই ফাইলটিকে API প্রক্সি স্কোপে ( /apiproxy/resources/java
এর অধীনে API প্রক্সি বান্ডেলে বা API প্রক্সি এডিটরের নেভিগেটর ফলকের স্ক্রিপ্ট বিভাগে) অথবা একাধিক API প্রক্সি জুড়ে পুনঃব্যবহারের জন্য সংস্থা বা পরিবেশের সুযোগে সংরক্ষণ করতে পারেন , যেমন রিসোর্স ফাইলে বর্ণনা করা হয়েছে।
<JavaCallout name="MyJavaCalloutPolicy"> <ResourceURL>java://MyJavaCallout.jar</ResourceURL> <ClassName>com.example.mypolicy.MyJavaCallout</ClassName> </JavaCallout>
ডিফল্ট: | কোনোটিই নয় |
উপস্থিতি: | প্রয়োজন |
প্রকার: | স্ট্রিং |
ত্রুটি উল্লেখ
This section describes the fault codes and error messages that are returned and fault variables that are set by Edge when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults.
Runtime errors
These errors can occur when the policy executes.
Fault code | HTTP status | Cause | Fix |
---|---|---|---|
steps.javacallout.ExecutionError |
500 | Occurs when Java code throws an exception or returns null during the execution of a JavaCallout policy. | build |
Deployment errors
These errors can occur when the proxy containing the policy is deployed.
Error name | Fault string | HTTP status | Occurs when |
---|---|---|---|
ResourceDoesNotExist |
Resource with name
[name] and type [type] does not exist |
N/A | The file specified in the <ResourceURL> element does not exist. |
JavaCalloutInstantiationFailed |
Failed to instantiate the JavaCallout Class [classname] |
N/A | The class file specified in the <ClassName> element is not in the
jar. |
IncompatibleJavaVersion |
Failed to load java class [classname] definition due to - [reason] |
N/A | See fault string. See also Supported software and supported versions. |
JavaClassNotFoundInJavaResource |
Failed to find the ClassName in java resource [jar_name] -
[class_name] |
N/A | See fault string. |
JavaClassDefinitionNotFound |
Failed to load java class [class_name] definition due to - [reason] |
N/A | See fault string. |
NoAppropriateConstructor |
No appropriate constructor found in JavaCallout class [class_name] |
N/A | See fault string. |
NoResourceForURL |
Could not locate a resource with URL [string] |
N/A | See fault string. |
Fault variables
These variables are set when this policy triggers an error. For more information, see What you need to know about policy errors.
Variables | Where | Example |
---|---|---|
fault.name="fault_name" |
fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. | fault.name Matches "ExecutionError" |
javacallout.policy_name.failed |
policy_name is the user-specified name of the policy that threw the fault. | javacallout.JC-GetUserData.failed = true |
Example error response
{ "fault":{ "faultstring":"Failed to execute JavaCallout. [policy_name]", "detail":{ "errorcode":"javacallout.ExecutionError" } } }
Example fault rule
<FaultRule name="JavaCalloutFailed"> <Step> <Name>AM-JavaCalloutError</Name> </Step> <Condition>(fault.name Matches "ExecutionError") </Condition> </FaultRule>
স্কিমাস
সংকলন এবং স্থাপনা
কীভাবে আপনার কাস্টম জাভা কোড কম্পাইল করবেন এবং একটি প্রক্সি দিয়ে এটি স্থাপন করবেন তার বিশদ বিবরণের জন্য, কীভাবে একটি জাভা কলআউট তৈরি করবেন দেখুন।
বিধিনিষেধ
নীচে জাভা কলআউট লেখার সময় আপনাকে যে বিধিনিষেধগুলি বিবেচনা করতে হবে:
- বেশিরভাগ সিস্টেম কল অননুমোদিত। উদাহরণস্বরূপ, আপনি অভ্যন্তরীণ ফাইল সিস্টেমকে পড়তে বা লিখতে পারবেন না।
- সকেটের মাধ্যমে নেটওয়ার্কে অ্যাক্সেস। Apigee সাইটলোকাল, যেকোন লোকাল, লুপব্যাক এবং লিঙ্কলোকাল ঠিকানাগুলিতে অ্যাক্সেস সীমাবদ্ধ করে।
- কলআউট বর্তমান প্রক্রিয়া, প্রক্রিয়া তালিকা, বা মেশিনে CPU/মেমরি ব্যবহার সম্পর্কে তথ্য পেতে পারে না। যদিও এই ধরনের কিছু কল কার্যকরী হতে পারে, তবে সেগুলি অসমর্থিত এবং যেকোন সময় সক্রিয়ভাবে অক্ষম করার জন্য দায়ী। ফরওয়ার্ড সামঞ্জস্যের জন্য, আপনার কোডে এই ধরনের কল করা এড়ানো উচিত।
- Apigee Edge এর সাথে অন্তর্ভুক্ত জাভা লাইব্রেরির উপর নির্ভরতা সমর্থিত নয়। এই লাইব্রেরিগুলি শুধুমাত্র এজ পণ্য কার্যকারিতার জন্য, এবং কোনও গ্যারান্টি নেই যে একটি লাইব্রেরি রিলিজ থেকে রিলিজ পর্যন্ত উপলব্ধ থাকবে৷
- Java কলআউটে প্যাকেজ নাম হিসেবে
io.apigee
বাcom.apigee
ব্যবহার করবেন না। এই নামগুলি সংরক্ষিত এবং অন্যান্য Apigee মডিউল দ্বারা ব্যবহৃত হয়।
প্যাকেজিং
/resources/java
অধীনে একটি API প্রক্সিতে JAR রাখুন। যদি আপনার জাভা কলআউট স্বাধীন JAR ফাইল হিসাবে প্যাকেজ করা অতিরিক্ত তৃতীয় পক্ষের লাইব্রেরির উপর নির্ভর করে, তাহলে সেই JAR ফাইলগুলিকে /resources/java
ডিরেক্টরিতে রাখুন যাতে রানটাইমে সঠিকভাবে লোড হয় কিনা তা নিশ্চিত করতে।
আপনি যদি প্রক্সি তৈরি বা পরিবর্তন করতে ম্যানেজমেন্ট UI ব্যবহার করেন, তাহলে একটি নতুন সংস্থান যোগ করুন এবং একটি অতিরিক্ত নির্ভরশীল JAR ফাইল নির্দিষ্ট করুন। যদি একাধিক JAR থাকে তবে সেগুলিকে অতিরিক্ত সংস্থান হিসাবে যোগ করুন। অতিরিক্ত JAR ফাইলগুলি উল্লেখ করার জন্য আপনাকে নীতি কনফিগারেশন পরিবর্তন করতে হবে না। সেগুলিকে /resources/java
এ রাখাই যথেষ্ট।
Java JAR আপলোড করার তথ্যের জন্য, রিসোর্স ফাইলগুলি দেখুন।
একটি বিস্তারিত উদাহরণের জন্য যা প্রদর্শন করে যে কিভাবে Maven বা javac ব্যবহার করে একটি জাভা কলআউট প্যাকেজ এবং স্থাপন করতে হয়, দেখুন কিভাবে একটি Java কলআউট তৈরি করতে হয় ।
জাভাডক
জাভা কলআউট কোড লেখার জন্য Javadoc এখানে GitHub-এ অন্তর্ভুক্ত করা হয়েছে। আপনাকে আপনার সিস্টেমে এইচটিএমএল ক্লোন বা ডাউনলোড করতে হবে এবং তারপরে একটি ব্রাউজারে index.html ফাইলটি খুলতে হবে।
ব্যবহারের নোট
- একটি জাভা কলআউট নীতিতে কোন প্রকৃত কোড নেই। পরিবর্তে, একটি জাভা কলআউট নীতি একটি জাভা 'রিসোর্স' উল্লেখ করে এবং এপিআই প্রবাহের ধাপটি সংজ্ঞায়িত করে যেখানে জাভা কোড কার্যকর হয়। আপনি ম্যানেজমেন্ট UI প্রক্সি সম্পাদকের মাধ্যমে আপনার Java JAR আপলোড করতে পারেন, অথবা আপনি স্থানীয়ভাবে বিকাশ করা API প্রক্সিগুলিতে
/resources/java
ডিরেক্টরিতে এটি অন্তর্ভুক্ত করতে পারেন। - দূরবর্তী পরিষেবাগুলিতে API কলগুলির মতো হালকা অপারেশনগুলির জন্য, আমরা ServiceCallout নীতি ব্যবহার করার পরামর্শ দিই৷ পরিষেবা কলআউট নীতি দেখুন।
- বার্তা সামগ্রীর সাথে তুলনামূলকভাবে সহজ ইন্টারঅ্যাকশনের জন্য, যেমন HTTP শিরোনাম, পরামিতি বা বার্তা সামগ্রী পরিবর্তন করা বা বের করা, Apigee একটি JavaScript নীতি ব্যবহার করার পরামর্শ দেয়।
সম্পর্কিত বিষয়
- সম্পর্কিত নমুনার জন্য, জাভা-কুকবুক সংগ্রহস্থল দেখুন।