Frage

Wenn ich ein signiertes Java-Applet ausgeführt wird, kann ich lade zusätzliche Klassen von entfernten Quellen (in der gleichen Domäne, vielleicht sogar die gleichen Host) und sie läuft?

Ich möchte, dies zu tun, ohne Seiten zu ändern oder sogar den aktuellen Applet zu stoppen. Natürlich ist die Gesamtgröße aller Klassen zu groß, sie alle auf einmal zu laden.

Gibt es eine Möglichkeit, dies zu tun? Und gibt es eine Möglichkeit, dies mit signierten Applets zu tun und zu bewahren ihren „Vertrauen“ Status?

War es hilfreich?

Lösung

Ich denke, Klassen faul sind in Applets geladen. wobei bei Bedarf geladen.

Wie auch immer, wenn die Klassen außerhalb eines Glases sind, können Sie einfach das Applet Classloader verwenden und sie mit Namen laden. Ex:

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

Wenn Sie Klassen aus dem Glas laden Ich glaube, Sie brauchen eine neue Instanz von URLClassLoader mit der URL (s) der Dose (n) erstellen.

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");

In der Standardeinstellung Applets sind verboten, um neue Klassenladeprogramme zu erstellen. Aber wenn Sie Ihr Applet unterzeichnen und umfassen die Erlaubnis neue Classloader erstellen Sie können es tun.

Andere Tipps

Ja, Sie können URL-Verbindungen zum Host öffnen Sie Ihr Applet lief aus. Sie können entweder einen Klassenlader mit HTTP-URLs erstellen, oder die Klassen herunterladen (wie Gläser) auf dem Computer des Benutzers und einen Klassenlader mit den Gläsern in der Classpath erstellen. Das Applet wird nicht aufhören, und Sie brauchen nicht eine andere Seite zu laden.

In Bezug auf den zweiten Teil Ihrer Frage über das Vertrauen, sobald der Benutzer den Zugriff auf das Applet erteilt hat es nichts herunterladen können, ja alles, will es der lokalen Maschine. Sie können sich wahrscheinlich um den Benutzer als informieren, was es tut, wenn Ihr UI-Design ermöglicht dies.

Hope, das hilft.

Klingt wie es möglich sein soll (aber ich habe es nie getan). Haben Sie bereits einen Blick auf Remote Method Invocation hatte ( RMI )?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top