package javacodebook.net.rmi.simpleserver; import java.rmi.*; /** * Dieses Interface definiert alle Methoden die dem Client zugänglich * sein sollen. */ public interface AddressBook extends Remote{ // Unter diesem String soll das Objekt gefunden werden public final static String NAMING = "addressbook"; // Gibt Anzahl gespeicherter Adressen an. public int getSize() throws RemoteException; // Liefert Adressen in String-Repräsentation zuück public String getAddressByName(String name) throws RemoteException; } --- Neue Klasse --- package javacodebook.net.rmi.simpleserver; import java.rmi.*; import java.rmi.registry.*; import java.rmi.server.UnicastRemoteObject; import java.net.MalformedURLException; import java.util.*; /** * Dieser Server beinhaltet Addressdaten. Kennt der Client den Nachnamen, * kann er auch weitere Informationen über diese Person erlangen. * Zusätzlich hat er noch Zugriff auf die Anzahl gespeicherter Adressen. * * Achtung: Bevor der Server laufen kann müssen Stub und Skeleton generiert * werden: * rmic javacodebook.net.rmi.simpleserver.AddressBookServer */ public class AddressBookServer implements AddressBook { // Adressen werden in eine HashTable abgelegt private Hashtable content = new Hashtable(); public int getSize() throws RemoteException { return content.size(); } public String getAddressByName(String name) throws RemoteException { return (String)content.get(name); } public AddressBookServer(int port)throws Exception { // AdressBuch wird mit Daten gefüllt fillHashTable(); // Der Namensdienst wird vom Programm aus gestartet LocateRegistry.createRegistry(port); // Dieses Server-Objekt wird exportiert UnicastRemoteObject.exportObject(this,port); // Das exportierte Objekt wird an der registry mit definierter // URL angemeldet Naming.rebind("//localhost:"+port+"/"+AddressBook.NAMING, this); } /** * Füllt Adressbuch mit Daten. */ private void fillHashTable() { content.put("Arbeit","Andi Arbeit, Terlindenweg 50, 59594 Soest"); content.put("Einstellbar","Manuel Einstellbar, Kaiserallee 4711, 76133 Karlsruhe" ); content.put("Sörwis","Sigrid Sörwis, Winsstrasse 00, 10405 Berlin"); content.put("Mutig","Miss Mutig, Kungshamra 2000, 1234 Stockholm"); } // Server wird gestartet. public static void main(String[] args) throws Exception{ new AddressBookServer(1099); } }