Frage

Ich möchte verstehen, wie die dynamische Proxy-Stub-Implementierung tatsächlich hinter den Kulissen geschieht. Nach dem, was ich las, von der Zeit wird ein Remote-Objekt ausgeführt werden, wenn keine vorab generierte Stub-Klasse gefunden wird, würde die RMI Laufzeit einen dynamischen Proxy erzeugt als Stub zu handeln. Das Stub wird dann an die RMI Registry gebunden und später zugänglich durch ein RMI-Client.

Die Frage ist: da der Stummel ein tatsächlich ist dynamisch generierte Proxy, seine Klassendefinition auf der Client-Seite nicht zur Verfügung stehen würde, dann wie kommt der Kunde noch in der Lage ist, den Stummel aus der RMI Registry abzurufen? Gibt es irgendeine Art von dynamischen Klassenladen hinter den Kulissen passiert oder nicht RMI eine andere Technik verwenden, um Arbeit-um diesen?

War es hilfreich?

Lösung

Java.lang.reflect.Proxy ist serializable und es hat eine besondere Unterstützung in Object und Object. Im Grunde nur die implementierten Schnittstellen und die Aufruf-Handler werden serialisiert und eine neue dynamische Proxy aus, dass während der Deserialisierung aufgebaut.

Andere Tipps

hat RMI dynamischen Laden von Klassen verwenden - das Classpath alongwith den Ruf als ‚Classpath Vermerk‘ gesendet wird, von dem der Client der Klasse lädt. Sie können sich für weitere Informationen an der RMI Implementierung finden - es als Teil der JDK Quelle verfügbar ist. Insbesondere die Klassen Object und RMIClassloader.

Update: RMI nicht einen HTTP-Server starten - in der Tat, würden Sie Ihre individuelle Lösung für diese benötigen. Einer von ihnen, wie Sie erwähnen können einen HTTP-Server, die Sie ausführen, stellen die Klassen über den Server zur Verfügung und übergeben Sie die Code-Basis mit der Adresse / Port des HTTP-Servers in Ihrer Stubs, so dass Ihre Kunden sie herunterladen können.

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