أنت الآن بصدد الاطّلاع على مستندات Apigee Edge.
انتقِل إلىمستندات Apigee X. info
إذا كنت تجرب ميزة "الرمز البرمجي الخارجي في Java" للمرة الأولى، ننصحك بالبدء بمقالة كيفية إنشاء رمز برمجي خارجي في Java.
يوضّح نموذج كتاب الطبخ هذا كيفية إنشاء سياسة JavaCallout بسيطة تنفّذ رمز Java مخصّصًا ضمن سياق مسار خادم وكيل.
ماذا يفعل نموذج الرمز البرمجي؟
يستدعي خادم وكيل واجهة برمجة التطبيقات في هذا النموذج خدمة مستهدَفة تعرض استجابة JSON بسيطة. يتم وضع سياسة "الرمز البرمجي الخارجي في Java" في مسار الاستجابة المستهدَفة. يحوّل رمز Java رؤوس الاستجابة ومحتواها إلى أحرف كبيرة. هذا مثال بسيط، ولكنّه يوضّح كيفية تشغيل رمز Java مخصّص ضمن سياق خادم وكيل واجهة برمجة التطبيقات على Edge.
تجربة النموذج
تنزيل المشروع
لتسهيل الأمر، يمكنك تنزيل هذا المشروع من مستودع Apigee api-platform-samples على GitHub.
- نزِّل api-platform-samples أو استنسِخه إلى جهازك.
- في أي محرر رموز أو نافذة طرفية تختارها، انتقِل إلى مشروع
api-platform-samples/doc-samples/java-cookbook.
تجميع الرمز البرمجي باستخدام Maven
تم إعداد المشروع بحيث يمكنك تجميعه باستخدام Maven. إذا أردت استخدام
javac، سنضمّن مثالاً أيضًا بعد مثال Maven.
- تأكَّد من تثبيت Maven:
mvn -version
- نفِّذ النص البرمجي
java-cookbook/buildsetup.sh. يُثبِّت هذا النص البرمجي تبعيات JAR المطلوبة في مستودع Maven المحلي. - انتقِل إلى الدليل
java-cookbool/callout. - نفِّذ Maven:
mvn clean package
- إذا أردت، تأكَّد من أنّه تم نسخ ملف JAR
edge-custom-policy-java-cookbook.jarإلىjava-cookbook/apiproxy/resources/java. هذا هو الموقع المطلوب لـ ملفات JAR التي تريد نشرها باستخدام خادم وكيل.
التجميع باستخدام javac
إذا أردت استخدام javac لتجميع الرمز البرمجي، يمكنك تنفيذ إجراء مشابه للإجراء التالي (من الدليل java-cookbook). يتم توفير ملفات JAR المطلوبة لك في الدليل java-cookbook/lib.
- انتقِل إلى
api-platform-samples/doc-samples/java-cookbook. - تأكَّد من أنّ `javac` مدرَج في مسارك.
javac -version
- نفِّذ أمر javac التالي:
javac -d . -classpath ./lib/expressions-1.0.0.jar:./lib/message-flow-1.0.0.jar:. callout/src/main/java/ResponseUppercase.java
- انسخ ملف JAR إلى الدليل apiproxy/resources/java. هذا هو الموقع المطلوب
لملفات JAR التي تريد نشرها باستخدام خادم وكيل.
cp com/apigeesample/ResponseUppercase.class apiproxy/resources/java
نشر الخادم الوكيل واستدعاؤه
يتم توفير نص برمجي للنشر في الدليل ./java-cookbook. ولكن قبل تشغيله
، عليك إجراء عملية إعداد سريعة.
- انتقِل إلى
api-platform-samples/doc-samples/java-cookbook - إذا لم يسبق لك ذلك، افتح الملف
../../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-cookbook/json
تبدو الاستجابة على النحو التالي:
< 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"}
مسار الخادم الوكيل
هذه لقطة شاشة من أداة التتبُّع تعرض مسار الخادم الوكيل:

بنية الخادم الوكيل
هذه هي بنية الخادم الوكيل. يُرجى العِلم أنّه يتضمّن ملف JAR في الـ
apiproxy/resources/java دليل. ملف JAR مطلوب. نوفّره لل
نموذج، ولكن إذا كنت تجري عملاً مخصّصًا، عليك إنشاءه بنفسك ونسخه إلى هذا ال
موقع. للحصول على إرشادات حول تجميع رمز برمجي خارجي في Java ونشره، يُرجى الاطّلاع على كيفية إنشاء رمز برمجي خارجي في Java.
java-cookbook apiproxy java-cookbook.xml policies responseUppercase.xml proxies default.xml resources java ResponseUppercase.jar targets default.xml
لمحة عن رمز Java
تنفّذ سياسة "الرمز البرمجي الخارجي في Java" رمز Java التالي الذي يحوّل رؤوس الاستجابة ونص الاستجابة إلى أحرف كبيرة. يُرجى العِلم أنّ البرنامج يستخدم حِزمًا خاصة بـ Apigee. توفر هذه الحِزم كائنات وطرقًا يمكنك استخدامها للتفاعل مباشرةً مع مسار الخادم الوكيل. تتوفّر طُرق تتيح لك الحصول على متغيّرات المسار ورؤوس الرسائل ومحتواها وغير ذلك وتعيينها.
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; } } }
الاطّلاع على نموذج الخادم الوكيل
نترك لك مهمة فتح الخادم الوكيل والاطّلاع على الملفات. في ما يلي سياسة "الرمز البرمجي الخارجي في Java". يُرجى العِلم بأنّها تشير إلى الفئة التي ينفّذها الرمز البرمجي الخارجي وملف JAR. تتّبع جميع سياسات "الرمز البرمجي الخارجي في Java" هذا النمط. يمكنك أيضًا الاطّلاع على سياسة "الرمز البرمجي الخارجي في Java".
<JavaCallout name="responseUppercase"> <ClassName>com.apigeesample.ResponseUppercase</ClassName> <ResourceURL>java://ResponseUppercase.jar</ResourceURL> </JavaCallout>