Java çağrısında özellik kullanma

Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin.
bilgi

Java çağrısı nedir?

Java çağrıları konusunda yeniyseniz Java çağrısı oluşturma başlıklı makaleyle başlamanızı öneririz.

Java çağrısında özellik kullanma

Özellikler, Java çağrı politikası içinde ad/değer çiftleri belirtmenize olanak tanır. Bu çiftlere çalışma zamanında Java kodunuzdan erişebilirsiniz. Her özellik için değişmez bir dize değeri belirtmeniz gerekir. Bu öğede akış değişkenlerine referans veremezsiniz.

Özellikleri kullanan basit bir Java çağrısı örneğini inceleyelim. Bu örnekte, Java çağrısı politikası içeren bir proxy oluşturuyoruz. Politika, ad/değer çiftini belirtmek için <Properties> öğesini kullanır. Java kodunda değeri alıp yanıt başlığı ayarlamak için kullanırız.

Projeyi indirme

İşleri kolaylaştırmak için bu projeyi GitHub'daki Apigee api-platform-samples deposundan indirebilirsiniz.

  1. api-platform-samples'ı sisteminize indirin veya klonlayın.
  2. Seçtiğiniz bir terminalde veya kod düzenleyicide api-platform-samples/doc-samples/java-properties projesine gidin.

Java çağrısı politikası

Politika, <Properties> öğesini kullanır. Bu öğe, ad/değer çiftlerini belirtmenize olanak tanır. Kısa süre sonra göreceğimiz gibi, Java kodunuz çalışma zamanında politikada belirtilen özelliklerin değerlerine erişebilir.

<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>

Örnek Java kodu

Bu örnekteki Java kodu, Java çağrısı politikasında belirtilen bir özelliğin nasıl alınacağını gösterir. Örnek projede kaynak kodunu java-properties/callout/src/main/java/JavaProperties.java içinde bulabilirsiniz. Bu kodun derlenmesi ve dağıtılmasıyla ilgili adımları bu konunun ilerleyen bölümlerinde ele alacağız.

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;
		}
	}
}

Kodunuzu Maven ile derleme

Proje, Maven ile derleme yapabileceğiniz şekilde ayarlanır. javac kullanmak istiyorsanız örnek de ekleriz.

  1. Maven'in yüklü olduğundan emin olun:
    mvn -version
  2. Komut dosyasını çalıştırın java-properties/buildsetup.sh. Bu komut dosyası, gerekli JAR bağımlılıklarını yerel Maven deponuza yükler.
  3. java-properties/callout dizinine gidin.
  4. Maven'i yürütün:
    mvn clean package
  5. İsterseniz JAR dosyasının edge-custom-policy-java-properties.jar java-properties/apiproxy/resources/java konumuna kopyalandığını doğrulayın. Bu, bir proxy ile dağıtmak istediğiniz JAR dosyaları için gerekli konumdur.

javac ile derleme (isteğe bağlı)

Kodu derlemek için javac kullanmak istiyorsanız aşağıdaki gibi bir işlem yapabilirsiniz (java-properties dizininden). Gerekli JAR dosyaları, java-properties/lib dizininde sizin için sağlanır.

  1. cd api-platform-samples/doc-samples/java-properties
  2. Yolunuzda javac olduğundan emin olun.

    javac -version
  3. Aşağıdaki javac komutunu çalıştırın:

    javac -d . -classpath ./lib/expressions-1.0.0.jar:./lib/message-flow-1.0.0.jar:. callout/src/main/java/JavaProperties.java
  4. JAR dosyası oluşturma:

    jar -cvf edge-custom-policy-java-properties.jar ./com/apigeesample/JavaProperties.class
  5. JAR dosyasını apiproxy/resources/java dizinine kopyalayın. Bu, proxy ile dağıtmak istediğiniz JAR dosyaları için gerekli konumdur.
    cp edge-custom-policy-java-properties.jar apiproxy/resources/java

Proxy'yi dağıtma ve çağırma

./java-properties dizininde bir dağıtım komut dosyası sağlanır. Ancak çalıştırmadan önce hızlı bir kurulum yapmanız gerekir.

  1. api-platform-samples/doc-samples/java-properties dizinine gidin.
  2. Henüz yapmadıysanız ../../setup/setenv.sh dosyasını açın ve Apigee hesap bilgilerinizle (kullanıcı adınız, kuruluş adınız ve API yönetimi çağrıları yapmak için kullandığınız alan) belirtildiği şekilde düzenleyin. Örneğin, Edge Cloud için alan https://api.enterprise.apigee.com şeklindedir. Ancak Edge Private Cloud kullanıyorsanız alanınız farklı olabilir.
  3. setenv.sh dosyasını kaydedin.
  4. Dağıtım komut dosyasını yürütün:
    ./deploy.sh
  5. Dağıtım başarılı olursa invoke komut dosyasını çalıştırın:
    ./invoke.sh

    Invoke komut dosyası, aşağıdaki gibi bir cURL komutu çağırır:

    curl  http://$org-$env.$api_domain/java-properties

    Proxy, X-PROPERTY-HELLO: WORLD! başlığını döndürür. Politikaya "prop/WORLD!" özellik adı/değer çiftini eklediğimizi unutmayın. Java çağrısı, "WORLD!" değerini alır ve X-PROPERTY-HELLO adlı bir üstbilgiye ayarlar:

    messageContext.getMessage().setHeader("X-PROPERTY-HELLO", this.properties.get("prop"));