RMI-Anwendungen bestehen meist aus einer Client-Server-Architektur. Ein Client fordert hierbei einen Dienst an, den er in transparenter Art und Weise auf einem Server ausführen kann. Hierbei erzeugt ein typischer Server eine Menge von entfernten Objekten und stellt sie dem Client über Referenzen zur Verfügung. Anschließend kann der Client auf diese Objekte zugreifen, indem er die Referenzen verwendet. RMI realisiert die Mechanismen, mit denen der Client und der Server kommunizieren. Allgemein bezeichnet man das in RMI verfolgte Konzept auch als verteilte Anwendung bzw. verteilte Systeme. Verteilte Objekte weisen die folgenden Eigenschaften bzw. Anforderungen auf: Lokalisierung verteilter Objekte Grundsätzlich stehen Anwendungen zwei Mechanismen zur Verfügung, um Referenzen auf entfernte Objekte zu erhalten. Eine Anwendung kann sich für ein entferntes Objekt registrieren (Rmiregistry) bzw. kann Referenzen auf entfernte Objekte im normalen Operationsmodus austauschen. Kommunikation mit entfernten Objekten Details der Kommunikation zwischen entfernten Objekten werden grundsätzlich mittels RMI vor dem Anwender verborgen. Aufrufe entfernter Methoden erscheinen dem Anwender daher derart, als ob lokale Methoden aufgerufen werden würden. Laden von Klassen verteilter Objekte RMI erlaubt einer aufrufenden Anwendung, Java-Objekte an entfernte Objekte zu übergeben. Hierzu stellt RMI sowohl die notwendigen Mechanismen zum Laden von Objekt-Code zur Verfügung als auch die Übertragungsfunktionalität. Das allgemeine Schema, das in RMI verwendet wird, ist in Abb. 11-1 dargestellt. Hierbei ruft ein Server die sog. Registry auf, um Referenzen auf entfernte Objekte zu erhalten. Bei diesem Aufruf wird ein logischer Name mit einem entfernten Objekt assoziiert. Anschließend erfragt ein Client ein entferntes Objekt, indem er den Namen verwendet, der in der Registry des Servers eingetragen ist. Mittels dieses Namens können dann Methodenaufrufe erfolgen. In RMI ist es weiterhin möglich, über einen Webserver Klassen-Bytecode verteilter Objekte vom Server zum Client zu transferieren und umgekehrt, wenn dies erforderlich ist. Abb. 11.1: Funktion von RMI