RMI - Universität Paderborn

Werbung
Universität Paderborn
Prof. Dr. Stefan Böttcher
Kapitel 6:
Ausgewählte Kapitel der
Java-Programmierung
Grundlagen der Programmierung 2, SS 2008
1
Universität Paderborn
Prof. Dr. Stefan Böttcher
Java-Remote Methode Invocation (RMI)
RMI: Aufruf von Methoden in entfernt definierten Klassen
RMI-Client
RMI-Server
RMI-Verbindung
Registrierung via rmiregistry
RMI-Compiler erzeugt aus Klassen Stubs und Skeleton-Klassen
Binden der Objekte , dann Aufruf wie bei lokalen Objekten
Serialisierung: Objekte werden als Datenstrom übertragen
Grundlagen der Programmierung 2, SS 2008
2
RMI-Code (Interface)
import java.rmi.*;
Universität Paderborn
Prof. Dr. Stefan Böttcher
Entfernter Server (Typ=interface)
public interface RemoteBank extends Remote {
public String conc(String s1, String s2)
throws RemoteException ;
}
Grundlagen der Programmierung 2, SS 2008
// interface für Server
// was Server bietet
3
RMI-Code (Client)
Universität Paderborn
Prof. Dr. Stefan Böttcher
import java.rmi.*;
public class Bank {
IP Servicename
public static void main(String[] args)
{ try
{ // Suche Server mit Name "bankname"
RemoteBank bank = // Serverobjekt
(RemoteBank) Naming.lookup("rmi://192.168.1.101/bankname");
String ret = bank.conc(args[0], args[1]); // Aufruf an Serverobjekt
System.out.println(ret) ;
} // Fange und zeige RMI-Exceptions
catch (Exception e) { System.out.println(e); }
} // main
}
Grundlagen der Programmierung 2, SS 2008
4
RMI-Code (Server)
import java.rmi.*;
import java.rmi.server.*;
import Bank.*;
Universität Paderborn
Prof. Dr. Stefan Böttcher
// lade das Interface für RemoteBank
public class RemoteBankServer extends UnicastRemoteObject implements RemoteBank
{ public RemoteBankServer() throws RemoteException { super(); }
// Implementierung der Remote-Methode conc aus Interface RemoteBank
public synchronized String conc (String s1, String s2) throws RemoteException
{ System.out.println( s1 + " :: " + s2 ) ;
return s1+s2 ;
}
public static void main(String[] args) {
try { RemoteBankServer bank = new RemoteBankServer(); // erzeugt Serverobjekt
Naming.rebind("bankname", bank);
// sein Name ist "bankname"
System.out.println("bankname ist bereit.");
}
catch (Exception e) {
System.err.println(e);
}
}
}
Grundlagen
der Programmierung 2, SS 2008
5
Universität Paderborn
Prof. Dr. Stefan Böttcher
RMI: Arbeitsweise / Codegenerierung
1. Alle Java-Programme übersetzen:
javac *.java
2. Das Server-Programm vorübersetzen mit rmic
rmic RemoteBankServer
erzeugt Code zum Datentransfer über das Netz
3. Einen Registrierungsprozess für rmi-Server starten
Fenster1: rmiregistry
4. Das Server-Programm starten
Fenster2: java RemoteBankServer
5. Das Client-Programm starten
Fenster3 (evtl. auf einem anderen Rechner): java Bank ab xy
Grundlagen der Programmierung 2, SS 2008
6
Herunterladen