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);
}
}
}
Similar Posts
Machine Learning, Big Data, Data Science, Analytics, Cloud, Security, AI, Robotics, Database, BI, Development: Software, Web, Mobile