// A client to test the NextNumber server import java.rmi.Remote; import java.rmi.RemoteException; import java.rmi.RMISecurityManager; import java.rmi.NotBoundException; import java.rmi.Naming; import java.net.MalformedURLException; public class NextNumberClient { public static void main(String[] args) { String urlServerStr = ""; if( (args.length > 1) || (args.length == 1 && !args[0].startsWith("rmi:")) ) { System.err.println( "Usage: java NextNumberCliente [rmi://host.domain:port/nextNumber]"); System.exit(1); } else if ( args.length == 0 ) { urlServerStr = "rmi://localhost/nextNumber"; } else { urlServerStr = args[0]; } if (System.getSecurityManager() == null) { System.setSecurityManager(new RMISecurityManager()); } Remote r = null; try { r = Naming.lookup(urlServerStr); } catch (RemoteException ex) { System.err.println("\n Couldn't contact registry."); System.err.println("Are you sure you're running rmiregistry?"); System.exit(1); } catch (NotBoundException ex) { System.err.println("\n There is no object bound to " + urlServerStr); System.err.println(" Are you sure you ran the server?"); System.exit(1); } catch (MalformedURLException ex) { System.err.println("\n The string " + urlServerStr + " is not a valid RMI URL"); System.err.println(" Make sure you use a " + "properly-formatted rmi:// URL"); System.exit(1); } try { if (r instanceof NextNumber) { NextNumber nn = (NextNumber)r; System.out.println("\n Next number after 1 is " + nn.getNextNumber(1)); System.out.println(" Next number after 2 is " + nn.getNextNumber(2)); System.out.println(" Next number after 3 is " + nn.getNextNumber(3)); } else { System.err.println("\n Uh oh, the name " + urlServerStr + "isn't a NextNumber"); } } catch (RemoteException ex) { System.err.println("\n Couldn't start client: " + ex.getMessage()); ex.printStackTrace(); } } }