Java कॉलआउट प्रॉपर्टी में प्रॉपर्टी इस्तेमाल करने का तरीका

Apigee Edge दस्तावेज़ देखा जा रहा है.
Apigee X दस्तावेज़ पर जाएं.
जानकारी

Java कॉलआउट क्या है?

अगर आपने Java कॉलआउट का इस्तेमाल पहले कभी नहीं किया है, तो हमारा सुझाव है कि आप Java कॉलआउट बनाने का तरीका जानने से शुरुआत करें.

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-callout">         
    <ClassName>com.apigeesample.JavaProperties</ClassName>         
    <ResourceURL>java://edge-custom-policy-java-properties.jar</ResourceURL>         
    <Properties>              
        <Property name="prop">WORLD!</Property>             
    </Properties> 
</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. cd को java-properties/callout डायरेक्ट्री में सेव करेगा.
  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. cd से api-platform-samples/doc-samples/java-properties को एक्सपोर्ट किया जाएगा.
  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. JAR फ़ाइल को apiप्रॉक्सी/resources/java डायरेक्ट्री में कॉपी करें. यह JAR फ़ाइलों के लिए जगह की जानकारी है, जिसे आपको प्रॉक्सी की मदद से डिप्लॉय करना है.
    cp edge-custom-policy-java-properties.jar apiproxy/resources/java
    

प्रॉक्सी डिप्लॉय करें और कॉल करें

./java-properties डायरेक्ट्री में एक डिप्लॉय स्क्रिप्ट दी गई है. हालांकि, इसे चलाने से पहले आपको तेज़ी से सेटअप करना होगा.

  1. cd से api-platform-samples/doc-samples/java-properties
  2. अगर आपने अब तक ऐसा नहीं किया है, तो ../../setup/setenv.sh फ़ाइल खोलें और अपने Apigee खाते की जानकारी में बताए गए तरीके से इसमें बदलाव करें: आपका उपयोगकर्ता नाम (आपके खाते से जुड़ा ईमेल पता), आपके संगठन का नाम, और वह डोमेन जिसका इस्तेमाल एपीआई मैनेजमेंट कॉल करने के लिए किया जाता है. उदाहरण के लिए, Edge क्लाउड के लिए डोमेन https://api.enterprise.apigee.com है. हालांकि, अगर एज प्राइवेट क्लाउड का इस्तेमाल किया जा रहा है, तो आपका डोमेन अलग हो सकता है.
  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"));