أنت الآن بصدد الاطّلاع على مستندات Apigee Edge.
انتقِل إلى
مستندات Apigee X. info
ما هي Java Callout؟
إذا كنت جديدًا على عمليات الربط الخارجية في Java، ننصحك بالبدء بمقال كيفية إنشاء عملية ربط خارجية في Java.
استخدام السمات في وسيط اتصال Java
تتيح لك المواقع تحديد أزواج الاسم/القيمة في سياسة Java Callout التي يمكنك الوصول إليها من رمز Java في وقت التشغيل. يجب تحديد قيمة سلسلة حرفية لكل خاصية، ولا يمكنك الرجوع إلى متغيرات التدفق في هذا العنصر.
لنطّلِع على مثال بسيط على عملية استدعاء Java تستخدم الخصائص. في هذا المثال، ننشئ خادمًا وكيلاً يتضمّن سياسة Java Callout. تستخدم السياسة العنصر <Properties> لتحديد زوج من الاسم/القيمة. في رمز Java، نستردّ القيمة ونستخدمها لضبط عنوان استجابة.
تنزيل المشروع
لتسهيل الأمر، يمكنك تنزيل هذا المشروع من مستودع api-platform-samples على Apigee على GitHub.
- نزِّل api-platform-samples أو استنسِخه إلى نظامك.
- في نافذة طرفية أو محرّر رموز من اختيارك، انتقِل إلى مشروع
api-platform-samples/doc-samples/java-properties.
سياسة Java Callout
تستخدِم السياسة العنصر <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 Callout. في المشروع النموذجي، يمكنك العثور على رمز المصدر في 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، سنضمّن مثالاً أيضًا.
- تأكَّد من تثبيت Maven:
mvn -version
- نفِّذ النص البرمجي
java-properties/buildsetup.sh. يثبّت هذا النص البرمجي تبعيات JAR المطلوبة في مستودع Maven المحلي. - انتقِل إلى الدليل
java-properties/callout. - نفِّذ Maven:
mvn clean package
- إذا أردت، تحقَّق من أنّه تم نسخ ملف JAR
edge-custom-policy-java-properties.jarإلىjava-properties/apiproxy/resources/java. هذا هو الموقع الجغرافي المطلوب لملفات JAR التي تريد نشرها باستخدام خادم وكيل.
الترجمة البرمجية باستخدام javac (اختياري)
إذا أردت استخدام javac لتجميع الرمز، يمكنك تنفيذ إجراء مشابه لما يلي (من الدليل java-properties). يتم توفير ملفات JAR المطلوبة لك في الدليل java-properties/lib.
- cd إلى
api-platform-samples/doc-samples/java-properties - تأكَّد من توفّر javac في مسارك.
javac -version
- نفِّذ أمر javac التالي:
javac -d . -classpath ./lib/expressions-1.0.0.jar:./lib/message-flow-1.0.0.jar:. callout/src/main/java/JavaProperties.java
- إنشاء ملف JAR:
jar -cvf edge-custom-policy-java-properties.jar ./com/apigeesample/JavaProperties.class
- انسخ ملف JAR إلى الدليل apiproxy/resources/java. هذا هو الموقع الجغرافي المطلوب لملفات JAR التي تريد نشرها باستخدام خادم وكيل.
cp edge-custom-policy-java-properties.jar apiproxy/resources/java
تفعيل الخادم الوكيل واستدعاؤه
يتم توفير نص برمجي للنشر في الدليل ./java-properties. ولكن قبل تشغيلها، عليك إجراء عملية إعداد سريعة.
- cd إلى
api-platform-samples/doc-samples/java-properties - إذا لم يسبق لك إجراء ذلك، افتح الملف
../../setup/setenv.shوعدِّله كما هو موضّح باستخدام معلومات حسابك على Apigee: اسم المستخدم (عنوان البريد الإلكتروني المرتبط بحسابك) واسم مؤسستك والنطاق الذي تستخدمه لإجراء طلبات إدارة واجهة برمجة التطبيقات. على سبيل المثال، بالنسبة إلى Edge Cloud، يكون النطاق هوhttps://api.enterprise.apigee.com، ولكن قد يختلف نطاقك إذا كنت تستخدم Edge Private Cloud. - احفظ ملف
setenv.sh. - نفِّذ نص النشر البرمجي:
./deploy.sh
- في حال نجح النشر، نفِّذ النص البرمجي للتشغيل:
./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"));