سؤال

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

والسؤال هو: منذ كعب هو في الواقع الوكيل الذي تم إنشاؤه بشكل حيوي، فإن تعريف فئتها لا تتوفر على جانب العميل، ثم كيف يأتي العميل لا يزال قادرا على استرداد كعب من التسجيل RMI؟ هل هناك نوع من الديناميكية الدرجة التحميل يحدث خلف الكواليس أو RMI لا تستخدم أسلوب آخر للعمل حول هذا؟

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

المحلول

وJava.lang.reflect.Proxy هو تسلسل ولها دعم خاص في ObjectOutputStream وObjectInputStream. في الأساس مجرد واجهات تنفيذها ومعالج الاحتجاج هي متسلسلة، وهي التي شيدت وكيل ديناميكية جديدة من أنه خلال إلغاء التسلسل.

نصائح أخرى

وRMI لا تستخدم classloading الحيوي - يتم إرسال CLASSPATH إرفاق الدعوة بمثابة "الشرح CLASSPATH" من الذي العميل بتحميل الطبقة. يمكنك أن تبحث في تنفيذ RMI للمزيد من المعلومات - أنها متاحة كجزء من مصدر JDK. على وجه التحديد، والطبقات ObjectOutputStream وRMIClassloader.

تحديث: RMI لا يبدأ خادم HTTP - في واقع الأمر، فإن كنت بحاجة الى حل مخصص لهذا الغرض. واحد منهم كما أذكر لكم يمكن أن يكون خادم HTTP التي تقوم بتشغيل، وجعل الطبقات المتاحة من خلال الخادم، وتمرير مصدر برنامج مع عنوان / منفذ خادم HTTP في بذرة الخاص بك، بحيث زبائنك يمكن تحميلها.

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