سؤال

إذا كنت أقوم بتشغيل برنامج Java صغير موقّع، فهل يمكنني تحميل فئات إضافية من مصادر بعيدة (في نفس المجال، وربما حتى نفس المضيف) وتشغيلها؟

أرغب في القيام بذلك دون تغيير الصفحات أو حتى إيقاف التطبيق الصغير الحالي.بالطبع، الحجم الإجمالي لجميع الفئات كبير جدًا بحيث لا يمكن تحميلها جميعًا مرة واحدة.

هل هناك طريقة للقيام بذلك؟وهل هناك طريقة للقيام بذلك باستخدام التطبيقات الموقعة والحفاظ على حالة "الثقة" الخاصة بها؟

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

المحلول

أعتقد أن الفصول يتم تحميلها كسولًا في التطبيقات الصغيرة.يتم تحميلها حسب الطلب.

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

ClassLoader loader = this.getClass().getClassLoader();
Class clazz = loader.loadClass("acme.AppletAddon");

إذا كنت تريد تحميل فئات من جرة، فأعتقد أنك ستحتاج إلى إنشاء مثيل جديد لـ URLClassLoader باستخدام عنوان (عناوين) url الخاص بالجرة (البرطمانات).

URL[] urls = new URL[]{new URL("http://localhost:8080/addon.jar")};
URLClassLoader loader = URLClassLoader.newInstance(urls,this.getClass().getClassLoader());
Class clazz = loader.loadClass("acme.AppletAddon");

افتراضيًا، يُحظر على التطبيقات الصغيرة إنشاء أدوات تحميل فئة جديدة.ولكن إذا قمت بالتوقيع على التطبيق الصغير الخاص بك وقمت بتضمين إذن لإنشاء أدوات تحميل فئة جديدة، فيمكنك القيام بذلك.

نصائح أخرى

نعم، يمكنك فتح اتصالات URL بالمضيف الذي قمت بتشغيل التطبيق الصغير منه.يمكنك إما إنشاء أداة تحميل فئة باستخدام عناوين URL لـ HTTP، أو تنزيل الفئات (كجرار) على جهاز المستخدم وإنشاء أداة تحميل فئة باستخدام تلك الجرار في مسار الفصل.لن يتوقف التطبيق الصغير ولن تحتاج إلى تحميل صفحة أخرى.

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

أتمنى أن يساعدك هذا.

يبدو أنه يجب أن يكون ممكنًا (لكنني لم أفعل ذلك أبدًا).هل سبق لك أن ألقيت نظرة على Remote Method Invocation (جمهورية جزر مارشال)?

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