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

आपको Apigee Edge दस्तावेज़ दिख रहा है.
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है इस पेज पर जाएं Apigee X दस्तावेज़.
जानकारी

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

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

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

प्रॉपर्टी की मदद से, Java की कॉलआउट नीति में नाम/वैल्यू पेयर की जानकारी दी जा सकती है रनटाइम पर अपने Java कोड का इस्तेमाल करें. आपको हर प्रॉपर्टी के लिए स्ट्रिंग की एक लिटरल वैल्यू बतानी होगी; आप नहीं कर सकते रेफ़रंस फ़्लो वैरिएबल शामिल करें.

आइए, अब एक आसान Java कॉलआउट का उदाहरण देखते हैं, जिसमें प्रॉपर्टी का इस्तेमाल किया गया है. इस उदाहरण में, हम एक ऐसी प्रॉक्सी बनाना जिसमें Java कॉलआउट नीति शामिल हो. यह नीति, नाम/वैल्यू पेयर को तय करने के लिए <Properties> एलिमेंट. Java कोड में, हम इस वैल्यू को फिर से पाएं और रिस्पॉन्स हेडर सेट करने के लिए इसका इस्तेमाल करें.

प्रोजेक्ट डाउनलोड करें

चीज़ों को आसान बनाने के लिए, इस प्रोजेक्ट को Apigee api-platform-samples रिपॉज़िटरी से डाउनलोड किया जा सकता है GitHub.

  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 डायरेक्ट्री में कॉपी करें. यह ज़रूरी जगह है जिन्हें आप प्रॉक्सी के साथ डिप्लॉय करना चाहते हैं.
    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; हालाँकि, डोमेन अलग हो सकता है अगर आप 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"));