package javacodebook.net.rmi.simpleclient; import java.rmi.*; import java.rmi.registry.*; // Das Addressbook interface muss auch auf Client-Seite bekannt sein. // Bemerkung: Für den Ort dieser Interfaces bietet sich oft ein öffentliches // Repository im Netz an, damit der Pfad unabhängig vom Serverpfad ist. import javacodebook.net.rmi.simpleserver.AddressBook; /** * Dieser Client sucht ein entferntes Objekt im Netz, und ruft zwei seiner * Methoden auf. * Es können der Application beim Start zwei Strings übergeben werden, der * erste gibt den "Host" der zweite den "Port" des Namensdienstes an. */ public class AddressBookClient { public static String host = "localhost"; public static int port = 1099; public static void main(String[] args) throws Exception { // Werden zwei Strings beim Program-Start übergeben, wird der erste // als URL und der zweite als Port des Namensdienstes interpretiert. // Sonst werden Default-Einstellungen verwendet. if(args.length==2) { host=args[0]; port=Integer.parseInt(args[1]); } // Anhand der Namensdienst URL und des Ports wird der Lookup-String // zusammengebaut. String mLookup = "//"+host+":"+port+"/"+AddressBook.NAMING; // Remote-Objekt wird referenziert, und zum AddressBook Object // gecastet AddressBook book = (AddressBook)Naming.lookup(mLookup); // Methoden des Remote-Objekts werden aufgerufen System.out.println("Das Adressbuch hat "+book.getSize()+" Einträge."); System.out.println("Arbeit hat folgende Adresse: " +book.getAddressByName("Arbeit")); } }