आपको Apigee Edge दस्तावेज़ दिख रहा है.
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
इस पेज पर जाएं
Apigee X दस्तावेज़. जानकारी
क्या
आपको पसंद के मुताबिक व्यवहार को लागू करने के लिए Java का इस्तेमाल करने में मदद करता है जो Apigee की नीतियां. अपने Java कोड में, मैसेज की प्रॉपर्टी (हेडर, क्वेरी पैरामीटर, content) और फ़्लो वैरिएबल से मेल खाते हैं. अगर आपने यह नीति हाल ही में शुरू की है, देखें Java बनाने का तरीका कॉलआउट.
Java के साथ काम करने वाले वर्शन के लिए, 'यह काम करता है' के तौर पर काम करने वाला सॉफ़्टवेयर और सॉफ़्टवेयर के साथ काम करने वाले वर्शन.
कब
दिशा-निर्देशों के लिए, "मुझे Java कॉलआउट का इस्तेमाल कब करना चाहिए?" में Java फ़ाइल की जानकारी कॉलआउट.
इसके बारे में जानकारी
Java कॉलआउट नीति की मदद से, आप फ़्लो वैरिएबल पा सकते हैं और उन्हें सेट कर सकते हैं. साथ ही, कस्टम लॉजिक को एक्ज़ीक्यूट कर सकते हैं और गड़बड़ी ठीक करना, अनुरोधों या जवाबों से डेटा एक्सट्रैक्ट करना वगैरह. इस नीति की मदद से, ये काम किए जा सकते हैं ऐसा कस्टम व्यवहार लागू करें जो किसी दूसरी मानक Edge नीतियों के दायरे में न आता हो.
आप अपने Java ऐप्लिकेशन को अपनी ज़रूरत की किसी भी पैकेज JAR फ़ाइलों के साथ पैकेज कर सकते हैं. नोट जोड़ें साथ ही, यह भी बताया गया है कि Java कॉलआउट की मदद से क्या किया जा सकता है. इनकी सूची नीचे दी गई है पाबंदियां में हैं.सैंपल
आसान उदाहरण
Java बनाने का तरीका कॉलआउटअपने Java कोड में प्रॉपर्टी वापस पाना
नीति के <Property>
एलिमेंट से, नाम/वैल्यू तय की जा सकती है
जोड़ा जा सकता है, जिसे आप अपने Java कोड में रनटाइम के दौरान वापस पा सकते हैं. उदाहरण के लिए, जो
प्रॉपर्टी के लिए, प्रॉपर्टी इस्तेमाल करने का तरीका
Java के कॉलआउट में.
<प्रॉपर्टी> का इस्तेमाल करें एलिमेंट का name
एट्रिब्यूट, जिससे नाम तय करने में मदद मिलती है
किस Java कोड से प्रॉपर्टी को ऐक्सेस किया जाता है. <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>
- अपने Java कोड में, नीचे दिए गए कंस्ट्रक्टर को एक्ज़ीक्यूशन क्लास पर लागू करें
इस तरह लागू करें:
public class MyJavaCallout implements Execution{ public MyJavaCallout(Map<string, string> props){ // Extract property values from map. } ... }
अपने Java कोड में फ़्लो वैरिएबल सेट करना
इसमें मैसेज के कॉन्टेक्स्ट (फ़्लो वैरिएबल) में वैरिएबल सेट करने के तरीके के बारे में साफ़ तौर पर जानकारी दी गई है अगर आपको अपना Java कोड इस्तेमाल करना है, तो यह Apigee कम्यूनिटी पोस्ट देखें.
एलिमेंट का रेफ़रंस
एलिमेंट का रेफ़रंस, Javaकॉलआउट नीति के एलिमेंट और एट्रिब्यूट के बारे में बताता है.
<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 |
नीति का अंदरूनी नाम. इसके अलावा, नीति को लेबल करने के लिए, |
लागू नहीं | ज़रूरी है |
continueOnError |
किसी नीति के काम न करने पर, गड़बड़ी दिखाने के लिए नीति के लागू होने के बाद भी फ़्लो को एक्ज़ीक्यूट करने के लिए, इसे |
गलत | वैकल्पिक |
enabled |
नीति को लागू करने के लिए, नीति को बंद करने के लिए, |
सही | वैकल्पिक |
async |
यह एट्रिब्यूट अब काम नहीं करता. |
गलत | बहिष्कृत |
<DisplayName> एलिमेंट
इस कॉलम में नीति को लेबल करने के लिए, name
एट्रिब्यूट के साथ-साथ इस्तेमाल करें
मैनेजमेंट यूज़र इंटरफ़ेस (यूआई) प्रॉक्सी एडिटर, जिसका नाम अलग और सामान्य भाषा में है.
<DisplayName>Policy Display Name</DisplayName>
डिफ़ॉल्ट |
लागू नहीं अगर आप इस एलिमेंट को छोड़ देते हैं, तो नीति की |
---|---|
मौजूदगी | वैकल्पिक |
टाइप | स्ट्रिंग |
<ClassName> एलिमेंट
Java कॉलआउट नीति के चलने पर, एक्ज़ीक्यूट होने वाली Java क्लास का नाम बताता है. कॉन्टेंट बनाने
क्लास को उस JAR फ़ाइल में शामिल करना चाहिए जो <ResourceURL>
में बताई गई है. यहां जाएं:
Java बनाने के बारे में भी जानें
कॉलआउट.
<JavaCallout name="MyJavaCalloutPolicy"> <ResourceURL>java://MyJavaCallout.jar</ResourceURL> <ClassName>com.example.mypolicy.MyJavaCallout</ClassName> </JavaCallout>
डिफ़ॉल्ट: | लागू नहीं |
मौजूदगी: | ज़रूरी है |
टाइप: | स्ट्रिंग |
<Property> एलिमेंट
इस नीति से एक ऐसी प्रॉपर्टी के बारे में पता चलता है जिसे रनटाइम के दौरान Java कोड से ऐक्सेस किया जा सकता है. आपको लिटरल वैल्यू हर प्रॉपर्टी के लिए स्ट्रिंग की वैल्यू; आप इस एलिमेंट में फ़्लो वैरिएबल का रेफ़रंस नहीं दे सकते. प्रॉपर्टी का इस्तेमाल करने वाले काम का उदाहरण, किसी प्रॉपर्टी को आगे बढ़ाने के लिए, Java कॉलआउट.
<Properties> <Property name="propName">propertyValue</Property> </Properties>
डिफ़ॉल्ट: | कोई नहीं |
मौजूदगी: | वैकल्पिक |
टाइप: | स्ट्रिंग |
विशेषताएं
एट्रिब्यूट | ब्यौरा | डिफ़ॉल्ट | मौजूदगी |
---|---|---|---|
नाम |
इससे प्रॉपर्टी का नाम पता चलता है. |
लागू नहीं | ज़रूरी है. |
<ResourceURL> एलिमेंट
यह एलिमेंट, Java JAR फ़ाइल के बारे में बताता है, जो Java कॉलआउट नीति के लागू होने पर काम करेगी दौड़ता है.
आप इस फ़ाइल को API प्रॉक्सी दायरे में (इसके अंतर्गत)
एपीआई प्रॉक्सी बंडल में या इसके स्क्रिप्ट सेक्शन में /apiproxy/resources/java
फिर से इस्तेमाल करने के लिए संगठन या एनवायरमेंट के दायरे में, एपीआई प्रॉक्सी एडिटर का नेविगेटर पैनल या
एक से ज़्यादा एपीआई प्रॉक्सी का इस्तेमाल कर सकते हैं, जैसा कि संसाधन फ़ाइलों में बताया गया है.
<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>
स्कीमा
कंपाइल और डिप्लॉय करना
अपने कस्टम Java कोड को इकट्ठा करने और उसे प्रॉक्सी के साथ डिप्लॉय करने का तरीका जानने के लिए, Java बनाने का तरीका देखें कॉलआउट.
पाबंदियां
Java कॉलआउट लिखते समय, आपको नीचे दी गई पाबंदियों को ध्यान में रखना चाहिए:
- ज़्यादातर सिस्टम कॉल की अनुमति नहीं है. उदाहरण के लिए, आप अंदरूनी फ़ाइल सिस्टम को रीड नहीं कर सकते या लिखते हैं.
- सॉकेट के ज़रिए नेटवर्क को ऐक्सेस करने की सुविधा. Apigee, साइटों को लोकल, किसी भी लोकल, लूपबैक, और linklocal पते.
- कॉलआउट में मौजूदा प्रोसेस, प्रोसेस सूची या मशीन पर सीपीयू/मेमोरी का इस्तेमाल. हालांकि इस तरह के कुछ कॉल काम कर सकते हैं, लेकिन काम नहीं करता और किसी भी समय सक्रिय रूप से बंद हो सकता है. आने वाले समय में साथ काम करने के लिए, आपको को अपने कोड में इस तरह के कॉल नहीं करने चाहिए.
- Apigee Edge के साथ शामिल की गई Java लाइब्रेरी पर भरोसा नहीं किया जा सकता. वे लाइब्रेरी का इस्तेमाल सिर्फ़ Edge प्रॉडक्ट की सुविधाओं के लिए किया जा सकता है. साथ ही, इस बात की कोई गारंटी नहीं है कि लाइब्रेरी अलग-अलग रिलीज़ में उपलब्ध रहे.
- Java में पैकेज नामों के रूप में
io.apigee
याcom.apigee
का इस्तेमाल न करें कॉलआउट. ये नाम रिज़र्व किए गए हैं और Apigee के अन्य मॉड्यूल इनका इस्तेमाल करते हैं.
पैकेजिंग
JAR को /resources/java
में मौजूद एपीआई प्रॉक्सी में रखें. अगर आपका Java कॉलआउट
स्वतंत्र रूप से काम करने वाली JAR फ़ाइलों के तौर पर पैकेज की गई अतिरिक्त तीसरे पक्ष की लाइब्रेरी का इस्तेमाल करते हैं. इसके बाद, उन JAR फ़ाइलों को
में /resources/java
डायरेक्ट्री में बदलाव करें. साथ ही, यह पक्का करें कि वे
रनटाइम.
अगर प्रॉक्सी बनाने या उसमें बदलाव करने के लिए, मैनेजमेंट यूज़र इंटरफ़ेस (यूआई) का इस्तेमाल किया जा रहा है, तो नया संसाधन जोड़ें और
एक अतिरिक्त डिपेंडेंट JAR फ़ाइल जोड़ें. अगर एक से ज़्यादा JAR हैं, तो उन्हें
अतिरिक्त संसाधन शामिल करें. अतिरिक्त जानकारी देखने के लिए, आपको नीति के कॉन्फ़िगरेशन में बदलाव करने की ज़रूरत नहीं है
JAR फ़ाइलें. उन्हें /resources/java
में डालना काफ़ी है.
Java JAR अपलोड करने के बारे में जानकारी के लिए, संसाधन फ़ाइलें देखें.
ज़्यादा जानकारी वाले उदाहरण के लिए, Maven का इस्तेमाल करके Java कॉलआउट को पैकेज और डिप्लॉय करने का तरीका बताया गया है या javac, देखने के लिए कैसे बनाएं Java का कॉलआउट.
Javadoc
Java कॉलआउट कोड लिखने के लिए, Java फ़ाइलें यहां भी शामिल है GitHub. आपको अपने सिस्टम में एचटीएमएल का क्लोन बनाना होगा या उसे डाउनलोड करना होगा. इसके बाद, बस index.html फ़ाइल होनी चाहिए.
इस्तेमाल की जानकारी
- Java कॉलआउट नीति में कोई असल कोड नहीं है. इसके बजाय, Java कॉलआउट नीति
Java 'संसाधन' और उस एपीआई फ़्लो का चरण तय करता है जहां Java कोड काम करता है. आप
मैनेजमेंट यूज़र इंटरफ़ेस (यूआई) के प्रॉक्सी एडिटर के ज़रिए अपना Java JAR अपलोड करें या आप इसे
एपीआई प्रॉक्सी में
/resources/java
डायरेक्ट्री, जिसे आपने स्थानीय तौर पर डेवलप किया है. - रिमोट सेवाओं को एपीआई कॉल करने जैसे आसान ऑपरेशन के लिए, हमारा सुझाव है कि सेवाकॉलआउट नीति. सेवा कॉलआउट की नीति देखें.
- मैसेज के कॉन्टेंट के साथ आसान इंटरैक्शन के लिए. जैसे, बदलाव करना या एक्सट्रैक्ट करना एचटीटीपी हेडर, पैरामीटर या मैसेज का कॉन्टेंट, Apigee, JavaScript नीति का इस्तेमाल करने का सुझाव देता है.
मिलते-जुलते विषय
- मिलते-जुलते सैंपल के लिए, java-cookbook' देखें डेटा स्टोर करने की जगह के लिए.