आपको 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>
डिफ़ॉल्ट: | कोई नहीं |
मौजूदगी: | ज़रूरी है |
टाइप: | स्ट्रिंग |
गड़बड़ी का रेफ़रंस
इस सेक्शन में, गड़बड़ी के कोड और गड़बड़ी के मैसेज के बारे में बताया गया है. साथ ही, इन गड़बड़ियों के वैरिएबल के बारे में भी बताया गया है, जो Edge की मदद से सेट किए जाते हैं. यह जानकारी जानना ज़रूरी है कि क्या आप गड़बड़ियों को ठीक करता है. ज़्यादा जानने के लिए, आपके लिए ज़रूरी जानकारी देखें नीति से जुड़ी गड़बड़ियों और हैंडलिंग के बारे में जानकारी गलतियां.
रनटाइम की गड़बड़ियां
नीति के लागू होने पर ये गड़बड़ियां हो सकती हैं.
गड़बड़ी कोड | एचटीटीपी कोड स्थिति | वजह | ठीक करें |
---|---|---|---|
steps.javacallout.ExecutionError |
500 | ऐसा तब होता है, जब Java कोड कोई अपवाद लागू करता है या Javaकॉलआउट नीति लागू करते समय शून्य दिखाता है. | build |
डिप्लॉयमेंट से जुड़ी गड़बड़ियां
ये गड़बड़ियां तब हो सकती हैं, जब नीति वाली प्रॉक्सी लागू की जाती है.
गड़बड़ी का नाम | गड़बड़ी वाली स्ट्रिंग | एचटीटीपी कोड स्थिति | कब होता है |
---|---|---|---|
ResourceDoesNotExist |
Resource with name
[name] and type [type] does not exist |
लागू नहीं | <ResourceURL> एलिमेंट में दी गई फ़ाइल मौजूद नहीं है. |
JavaCalloutInstantiationFailed |
Failed to instantiate the JavaCallout Class [classname] |
लागू नहीं | <ClassName> एलिमेंट में दी गई क्लास फ़ाइल,
जार. |
IncompatibleJavaVersion |
Failed to load java class [classname] definition due to - [reason] |
लागू नहीं | गड़बड़ी वाली स्ट्रिंग देखें. समर्थित सॉफ़्टवेयर और सॉफ़्टवेयर के साथ काम करने वाले वर्शन. |
JavaClassNotFoundInJavaResource |
Failed to find the ClassName in java resource [jar_name] -
[class_name] |
लागू नहीं | गड़बड़ी वाली स्ट्रिंग देखें. |
JavaClassDefinitionNotFound |
Failed to load java class [class_name] definition due to - [reason] |
लागू नहीं | गड़बड़ी वाली स्ट्रिंग देखें. |
NoAppropriateConstructor |
No appropriate constructor found in JavaCallout class [class_name] |
लागू नहीं | गड़बड़ी वाली स्ट्रिंग देखें. |
NoResourceForURL |
Could not locate a resource with URL [string] |
लागू नहीं | गड़बड़ी वाली स्ट्रिंग देखें. |
गड़बड़ी के वैरिएबल
ये वैरिएबल तब सेट किए जाते हैं, जब इस नीति की वजह से कोई गड़बड़ी होती है. ज़्यादा जानकारी के लिए, आपके लिए ज़रूरी जानकारी देखें नीति से जुड़ी गड़बड़ियों के बारे में जानकारी.
वैरिएबल | कहां | उदाहरण |
---|---|---|
fault.name="fault_name" |
fault_name गड़बड़ी का नाम है, जैसा कि ऊपर रनटाइम में गड़बड़ियां टेबल में बताया गया है. गड़बड़ी का नाम, गड़बड़ी के कोड का आखिरी हिस्सा होता है. | fault.name Matches "ExecutionError" |
javacallout.policy_name.failed |
policy_name, उपयोगकर्ता की ओर से बताया गया उस नीति का नाम है जिसमें गड़बड़ी हुई है. | javacallout.JC-GetUserData.failed = true |
गड़बड़ी के रिस्पॉन्स का उदाहरण
{ "fault":{ "faultstring":"Failed to execute JavaCallout. [policy_name]", "detail":{ "errorcode":"javacallout.ExecutionError" } } }
गड़बड़ी के नियम का उदाहरण
<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' देखें डेटा स्टोर करने की जगह के लिए.