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

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

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. 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. 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 फ़ाइल को apiproxy/resources/java डायरेक्ट्री में कॉपी करें. यह उन JAR फ़ाइलों के लिए ज़रूरी जगह है जिन्हें प्रॉक्सी के साथ डिप्लॉय करना है.
    cp edge-custom-policy-java-properties.jar apiproxy/resources/java

प्रॉक्सी डिप्लॉय करना और उसे कॉल करना

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

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