سؤال

أنا أتطلع إلى استدعاء برنامج Java من آر بي جي يعمل على ISERIES V5R4. البرنامج البعيد هو عميل خدمة ويب (يؤدي البحث عن الرمز البريدي)، يعمل في WebSphere.

من الناحية المثالية، أود أن أسميها مباشرة من آر بي جي؟ هل هذا ممكن؟ أو هل يجب علي إنشاء برنامج Java لتشغيله على ISERIES واستخدام RMI أو شيء ما للاتصال ببرنامج Java البعيد.

نحن لسنا حريصين على الاتصال ب WESTENRAL WebService المباشر لأنه يعني فتح المسار من عالم آخر مباشرة إلى ISERIES.

أنا لست مبرمج آر بي جي، فقط أبحث عن شيء لأجور شبابنا في الاتجاه الصحيح أو أي شيء أحتاج إلى تمكينه من إجراء برامج Java أكثر استهلايا لأشخاص RPG.

شكرا، سكوت

هل كانت مفيدة؟

المحلول

نظرا لأن البرنامج يعمل على خادم بعيد، لا يمكنك الاتصال به مباشرة من آر بي جي. بالنظر إلى أنه خدمة ويب، أود إنشاء برنامج Java لتشغيل ISERIES واتصل ببرنامج Java من داخل آر بي جي. في الوقت الحاضر، يمكن أن تصل آر بي جي واجهة مباشرة مع جافا. يجب عليك إنشاء بعض المواصفات D لإعلان الفصل والنموذج الأولي مكالمات الطريقة. في المثال التالي، افترض وجود فئة Java موجودة دعا Servicecaller في "أدوات" الحزمة. لديها طريقة واحدة تسمى itserviceRyply تقبل ثلاثة حقول الأحرف وإرجاع عدد صحيح.

 * حدد فئة Java محليا. Dservicecaller So Class (* Java: Tools.servicecaller ') * منشئ الطبقة. لا المعلمات. dnewservicecaller pr o extproc (* java: d 'tools.servicecaller': d * منشئ) D الفئة (* Java: 'tools.servicecomaller') * itserviceRiply. * int intervicply (byte [] parm1، البايت [] parm2، byte [] parm3) dgetserviceryply pr 10i 0 extproc (* java: d 'tools.servicecaller': d 'getsficerypler') d parm1 400a const d parm2 400a const d PARM3 400A const.

ستبدو المواصفات RPG الخاصة بك شيء مثل هذا المثال الحرة:

/ مجانا Servicecaller = Newservicecaller ()؛ Ireply = GetServiceRiply (Servicecaller: 'parm1': 'parm2': 'parm3')؛ / نهاية خالية

داخل رمز Java، ضمن طريقة GetServiceRiply، تحويل صفائف البايت إلى سلاسل مثل هذا:

Sparm1 = سلسلة جديدة (PARM1)؛ Sparm2 = سلسلة جديدة (PARM2)؛ Sparm3 = سلسلة جديدة (PARM3)؛

منح هذا مثال مبسيطا ويحتاج طلبك سيكون مختلفا قليلا. سوف ترغب في إضافة رمز معالجة الأخطاء في حالة عدم الرد خدمة الويب. قد ترغب أيضا في استخدام Getters و Setters في صفك. كل هذا يتوقف على احتياجات طلبك ومتطلبات خدمة الويب البعيدة.

بعض الملاحظات على أنواع آر بي جي لأنواع جافا:

RPG Type Java Type 10i 0 INT INT 3I 0 BYTE 5I 0 SHORT 20I 0 LONG N BOOLEAN [

إذا كنت تشعر بتطدياء بشكل خاص، فيمكنك استدعاء فئات HTTP Java الأصلية من داخل آر بي جي الخاص بك. لكنني وجدت أن برنامج Java مخصص للعمل كقاعدة مكتوبة على وجه التحديد للتحدث مع آر بي جي هو وسيلة أسهل للذهاب. على الرغم من أن آر بي جي يمكن أن تتحدث إلى جافا، إلا أنها ليست جميلة كما تتحدث جافا إلى جافا.

يمكن العثور على معلومات إضافية حول الاتصال بجافا من آر بي جي في دليل مبرمج Ile RPG. يمكن العثور على نسخة V5R4 هنا: http://publib.boulder.ibm.com/infocenter/iseries/v5r4/topic/books/sc092507.pdf.

نصائح أخرى

نظرا لأن خدمة ويب، فإن حل آخر سيكون استخدام API Scott Klemlement HTTP. انها متوفرة على موقعه في http://www.scottklement.com/httpapi/.

واحدة من الفوائد الكبيرة بالنسبة لي هي أن هذه هي آر بي جي بالكامل ولا تستخدم أي جافا يمكن أن تكون بطيئا بعض الشيء في بعض الأحيان. أنا لست على دراية حقيقية حول كيفية عمل خدمات الويب في Java ولكن يبدو أنك لست مضطرا لتشكيل جميع XML ويتم ذلك من أجلك. مع App API، ستحتاج إلى القيام بذلك بنفسك.

أيضا Scott Klement لديه العديد من الأشياء المفيدة الأخرى على موقعه الإلكتروني. موقع آخر مع بعض الأدوات أنيق هو http://www.think400.dk/downloads.htm..

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top