RMI Guide 1 Checkliste 1.1 Infrastruktur: Um einen gewissen Überblick bei der Programmierung und bei der Installation zu behalten sollte die RMI Applikation zumindest in 3 Packages unterteilt werden: • INTERFACES: Dieses Paket sollte alle Interfaces beinhalten, auch jene, die durch die Server Klasse implementiert werden. Dabei verwenden zumindest eine Server und eine Client Klasse später dieses Interface. • SERVER: In diesem Paket befindet sich die RMI-Server Klasse, welche das Interface implementiert und das RMI-Objekt an der RMI-Registry anmeldet. • CLIENT: In diesem Paket befindet sich die Klasse, die letztendlich bei der RMIRegistry anfragt und sich das Interface zu dem RMI-Objekt holt. Abbildung 1-1: HelloWorld Package Struktur Hat man sich seine Struktur angelegt kann man nun leicht die entsprechenden Batchdateien erstellen: 1.2 Vorbereitung • compile-Script: Common Package zuerst, da hier das Hello Interface enthalten ist, welches vom Client und Server Package verwendet wird. javac Common\*java javac ClientServer\*java javac Client\*java javac ClientApplet\*java • Stub und Skeleton Script: rmic Server.HelloServer • JAR-Script: Damit kann nun eine jar-Datei erzeugt werden, die den Serverteil, also alle Classfiles und Stubs beinhaltet. Um dieses jar zu verwenden muss es allerdings erst per http zugängig gemacht werden. jar -cvf server.jar Server\*.class 1.3 Ausführung Das Beispiel beinhaltet auch Skripten für UNIX (*.sh) und Windows (*.bat) zum Starten von rmiregistry, Server und Client. Die Skripten müssen aber vorher angepaßt werden (Kennung und Portnummer) !!! 1. RMI-Registry starten: <port> ist dabei durch eine Zahl zwischen 1024 und 65535 zu ersetzen. (Durch diese Angabe eines eigenen Ports soll sichergestellt werden, dass jeder Benutzer seine private RMI-Registry nutzt) ACHTUNG: rmiregistry NICHT im Verzeichnis Server starten, sondern aus dem Root-Verzeichnis heraus!!! rmiregistry <port> 2. Serverstart: a. OHNE jar: Der Classpath wird automatisch mit “.”, also dem aktuellen Verzeichnis ergänzt. <host> z.B. hanibal.ifs.univie.ac.at <port> z.B. 1234 java -Djava.security.policy=policy Server.HelloServer <host>:<port> b. MIT jar: Dem Classpath wird nun der Inhalt des jar-Files hinzugefügt. <host> z.B. hanibal.ifs.univie.ac.at <port> z.B. 1234 java -Djava.rmi.server.codebase=http://hanibal.ifs.univie.ac.at/~a<matrnr>/server.jar -Djava.security.policy=policy Server.HelloServer <host>:<port> 3. Clientstart: <port> z.B. 1234 java -Djava.security.policy=policy Client.HelloClient <host>:<port>