JAVA RMI
RMI RMI steht für Remote Method Invocation Angelehnt an RPC (remote procedure call) Bestandteil von JAVA Package Java.rmi.*
VORTEIL VON JAVA wurde u.a. entworfen, um die Entwicklung von Netzwerk-Applikationen zu erleichtern Java-Objekte sind: klein maschinenunabhängig portabel Sicher
VERTEILTE ANWENDUNG IN JAVA Java ist geeignet für verteilten Systemen RMI bietet die Möglichkeit: verteilte Anwendungen in JAVA einfach abstrahierter entfernter Methodenaufruf Transparenzprinzip Keine Kenntnis über Netzprogrammierung erforderlich
EINGENSCHAFT VON RMI RMI bietet einfache Möglichkeit um verteilte, plattformübergreifende Softwareherzustellen, die transparent über heterogene Netzwerke hinweg arbeitet. RMI ermöglicht das Aufrufen von Java-Methoden auf Objekte die in einem über ein Netzwerk verbundenen Rechner residieren. Die Basis eines RMI-Programms sind „Remote Objects“.
BESTANDTEIL RMI besteht aus Naming Service Kommunikationskomponente Server Client
LAYER
PROTOKOLL RMI Wired Protocol IIOP (Internet Inter ORB Protocol) Von Sun Aufbauend auf TCP/IP Verwendet HTTP Server IIOP (Internet Inter ORB Protocol) Von OMG (Object Management Group) Verwendet auch in CORBA
SERIALISATION Um Objekte in einen Stream verwandelt werden können, welcher dann versandt wird Durch Stub und Skeleton Klassen auf dem Client bzw. Server Schreibt man RMI Objekte und bewegt Objekte als Parameter oder Ergebnis,dann sollten diese Objekte als Serializable markiert sein
RMI Class Loader Klassen zu übermittelten Objekten müssen eventuell nachgeladen werden Klassen werden nur nachgeladen, wenn ein SecurityManager installiert ist: void System. setSecurityManager( SecurityManager s)
SecurityManager SecurityManager ist abstrakte Klasse mit Methoden, die java.lang.SecurityManager werfen wenn bestimmte Operationen nicht erlaubt sind java. rmi. RMISecurityManager implementiert eine Sicherheitspolicy,z. B.: Kein Arbeiten mit Ports Keine Manipulation von Threads Keine Prozesse
Naming Service Objekte mit lesbaren Namen zu assoziieren Registry bind() rebind() unbind() lookup() list() Registry der eigentliche Server
SCHICHTEN MODEL
VERGLEICH Vorteile zu CORBA Nachteile zu CORBA Transparenz einfache Programmierung eingebunden in JAVA JDK URL basierte Namensgebung Nachteile zu CORBA auf JAVA beschränkt, d.h. nicht so mächtig Geschwindigkeitsnachteil wenige Services implementiert