Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. bilgi
Java çağrısını ilk kez deniyorsanız Java çağrısı oluşturma başlıklı makaleyle başlamanızı öneririz.
Bu çözüm kitabı örneğinde, bir proxy akışı bağlamında özel Java kodu yürüten basit bir JavaCallout politikası oluşturma işlemi gösterilmektedir.
Örnek kod ne işe yarar?
Bu örnekteki API proxy'si, basit bir JSON yanıtı döndüren bir hedef hizmeti çağırır. Java Callout politikası, hedef yanıt akışına yerleştirilir. Java kodu, yanıtın başlıklarını ve içeriğini büyük harflere dönüştürür. Bu basit örnek, Edge'deki bir API proxy'si bağlamında özel Java kodunun nasıl çalıştırılacağını gösterir.
Örneği deneyin
Projeyi indirme
İşleri kolaylaştırmak için bu projeyi GitHub'daki Apigee api-platform-samples deposundan indirebilirsiniz.
- api-platform-samples'ı sisteminize indirin veya klonlayın.
- Seçtiğiniz bir terminalde veya kod düzenleyicide
api-platform-samples/doc-samples/java-cookbookprojesine gidin.
Kodunuzu Maven ile derleme
Proje, Maven ile derleme yapabileceğiniz şekilde ayarlanır. javac kullanmak istiyorsanız Maven örneğini takip eden bir örnek de ekleyeceğiz.
- Maven'in yüklü olduğundan emin olun:
mvn -version
- Komut dosyasını çalıştırın
java-cookbook/buildsetup.sh. Bu komut dosyası, gerekli JAR bağımlılıklarını yerel Maven deponuza yükler. java-cookbool/calloutdizinine gidin.- Maven'i yürütün:
mvn clean package
- İsterseniz
edge-custom-policy-java-cookbook.jarJAR dosyasınınjava-cookbook/apiproxy/resources/javakonumuna kopyalandığını doğrulayın. Bu, bir proxy ile dağıtmak istediğiniz JAR dosyaları için gerekli konumdur.
javac ile derleme
Kodu derlemek için javac kullanmak istiyorsanız aşağıdaki gibi bir işlem yapabilirsiniz (java-cookbook dizininden). Gerekli JAR dosyaları, java-cookbook/lib dizininde sizin için sağlanır.
- cd
api-platform-samples/doc-samples/java-cookbook - Yolunuzda javac olduğundan emin olun.
javac -version
- 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/ResponseUppercase.java
- JAR dosyasını apiproxy/resources/java dizinine kopyalayın. Bu, proxy ile dağıtmak istediğiniz JAR dosyaları için gerekli konumdur.
cp com/apigeesample/ResponseUppercase.class apiproxy/resources/java
Proxy'yi dağıtma ve çağırma
./java-cookbook dizininde bir dağıtım komut dosyası sağlanır. Ancak çalıştırmadan önce hızlı bir kurulum yapmanız gerekir.
api-platform-samples/doc-samples/java-cookbookdizinine gidin.- Henüz yapmadıysanız
../../setup/setenv.shdosyası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 alanhttps://api.enterprise.apigee.comşeklindedir. Ancak Edge Private Cloud kullanıyorsanız alanınız farklı olabilir. setenv.shdosyasını kaydedin.- Dağıtım komut dosyasını yürütün:
./deploy.sh
- 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-cookbook/json
Yanıt aşağıdaki gibi görünür:
< HTTP/1.1 200 OK < Date: Tue, 09 May 2017 20:31:08 GMT < Content-Type: APPLICATION/JSON; CHARSET=UTF-8 < Content-Length: 68 < Connection: keep-alive < Access-Control-Allow-Origin: * < ETag: W/"44-RA5ERT/MMLIK54NVBWBSZG" < X-Powered-By: APIGEE < Server: Apigee Router < * Curl_http_done: called premature == 0 * Connection #0 to host willwitman-test.apigee.net left intact {"FIRSTNAME":"JOHN","LASTNAME":"DOE","CITY":"SAN JOSE","STATE":"CA"}
Proxy akışı
Bu, proxy akışını gösteren izleme aracının bir görüntüsüdür:

Proxy yapısı
Bu, proxy'nin yapısıdır. apiproxy/resources/java dizininde bir JAR dosyası içerdiğini unutmayın. JAR gereklidir. Bu dosya örneği için sağlanır ancak özel bir çalışma yapıyorsanız dosyayı kendiniz oluşturup bu konuma kopyalamanız gerekir. Java çağrısı derleme ve dağıtma hakkında bilgi edinmek için Java çağrısı oluşturma başlıklı makaleyi inceleyin.
java-cookbook apiproxy java-cookbook.xml policies responseUppercase.xml proxies default.xml resources java ResponseUppercase.jar targets default.xml
Java kodu hakkında
Java Callout politikası, yanıt üstbilgilerini ve yanıt gövdesini büyük harfe dönüştüren aşağıdaki Java kodunu çalıştırır. Programın Apigee'ye özgü paketler kullandığını unutmayın. Bu paketler, proxy akışıyla doğrudan etkileşim kurmak için kullanabileceğiniz nesneler ve yöntemler sağlar. Akış değişkenlerini, üstbilgileri, ileti içeriğini ve daha fazlasını almanıza ve ayarlamanıza olanak tanıyan yöntemler vardır.
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.Set; public class ResponseUppercase implements Execution{ public ExecutionResult execute(MessageContext messageContext, ExecutionContext executionContext) { try { Set headers = messageContext.getMessage().getHeaderNames(); for (String header : headers) { String h = messageContext.getMessage().getHeader(header).toUpperCase(); messageContext.getMessage().setHeader(header, h); } String content = messageContext.getMessage().getContent(); messageContext.getMessage().setContent(content.toUpperCase()); return ExecutionResult.SUCCESS; } catch (Exception e) { return ExecutionResult.ABORT; } } }
Örnek proxy'yi inceleyin
Proxy'yi açıp dosyaları incelemek size kalmıştır. Java Callout politikası aşağıda verilmiştir. Açıklama metninin, açıklama metninin yürütüldüğü sınıfa ve JAR dosyasına nasıl referans verdiğine dikkat edin. Tüm Java Callout politikaları bu kalıbı izler. Ayrıca Java Callout politikası'nı inceleyin.
<JavaCallout name="responseUppercase"> <ClassName>com.apigeesample.ResponseUppercase</ClassName> <ResourceURL>java://ResponseUppercase.jar</ResourceURL> </JavaCallout>