Rem.java Establishes which methods the client can access in the remote object. import java.rmi.*; /** The RMI client will use this interface directly. The RMI * server will make a real remote object that implements this, * then register an instance of it with some URL. * * Taken from Core Web Programming from * Prentice Hall and Sun Microsystems Press, * . * © 2001 Marty Hall and Larry Brown; * may be freely used or adapted. */ public interface Rem extends Remote { public String getMessage() throws RemoteException; } RemClient.java The client application which communicates to the remote object and retrieves the message. import java.rmi.*; // For Naming, RemoteException, etc. import java.net.*; // For MalformedURLException import java.io.*; // For Serializable interface /** Get a Rem object from the specified remote host. * Use its methods as though it were a local object. * * Taken from Core Web Programming from * Prentice Hall and Sun Microsystems Press, * . * © 2001 Marty Hall and Larry Brown; * may be freely used or adapted. */ public class RemClient { public static void main(String[] args) { try { String host = (args.length > 0) ? args[0] : "localhost"; // Get the remote object and store it in remObject: Rem remObject = (Rem)Naming.lookup("rmi://" + host + "/Rem"); // Call methods in remObject: System.out.println(remObject.getMessage()); } catch(RemoteException re) { System.out.println("RemoteException: " + re); } catch(NotBoundException nbe) { System.out.println("NotBoundException: " + nbe); } catch(MalformedURLException mfe) { System.out.println("MalformedURLException: " + mfe); } } } RemImpl.java The concrete, remote object that implements the methods in Rem.java. import java.rmi.*; import java.rmi.server.UnicastRemoteObject; /** This is the actual implementation of Rem that the RMI * server uses. The server builds an instance of this, then * registers it with a URL. The client accesses the URL and * binds the result to a Rem (not a RemImpl; it doesn't * have this). * * Taken from Core Web Programming from * Prentice Hall and Sun Microsystems Press, * . * © 2001 Marty Hall and Larry Brown; * may be freely used or adapted. */ public class RemImpl extends UnicastRemoteObject implements Rem { public RemImpl() throws RemoteException {} public String getMessage() throws RemoteException { return("Here is a remote message."); } } RemServer.java Creates an instance of RemImpl on the remote server and binds the object in the registry for lookup by the client. import java.rmi.*; import java.net.*; /** The server creates a RemImpl (which implements the Rem * interface), then registers it with the URL Rem, where * clients can access it. * * Taken from Core Web Programming from * Prentice Hall and Sun Microsystems Press, * . * © 2001 Marty Hall and Larry Brown; * may be freely used or adapted. */ public class RemServer { public static void main(String[] args) { try { RemImpl localObject = new RemImpl(); Naming.rebind("rmi:///Rem", localObject); } catch(RemoteException re) { System.out.println("RemoteException: " + re); } catch(MalformedURLException mfe) { System.out.println("MalformedURLException: " + mfe); } } }
RMI Example – Message, illustrates retrieving a message from an object located on a remote server. Requires the following classes
Permanent link to this article: http://bangla.sitestree.com/rmi-example-message-illustrates-retrieving-a-message-from-an-object-located-on-a-remote-server-requires-the-following-classes/