Defining and Exporting a Portable Remote Object 1. Define the remote interface. import java.rmi.*; public interface RObject extends Remote { void aMethod() throws RemoteException; } 2. Define the portable remote object implementation. import java.rmi.*; import java.rmi.server.UnicastRemoteObject; public class RObjectImpl extends UnicastRemoteObject implements RObject { public RObjectImpl() throws RemoteException { super(); } // All remote methods must throw RemoteException public void aMethod() throws RemoteException { } } 3. Compile the remote object implementation. > javac RObject.java RObjectImpl.java 4. Generate the skeletons and stubs. Using RMI over IIOP > rmic -iiop RObjectImpl Using RMI over JRMP > rmic RObjectImpl 5. Create an instance of the remote object and bind it to a name service. import javax.naming.*; import java.rmi.RemoteException; // JRMP: name = "rmi://localhost/RObjectServer"; // IIOP: name = "iiop://localhost/RObjectServer"; try { RObject robj = new RObjectImpl(); new InitialContext().bind(name, robj); } catch (NamingException e) { e.printStackTrace(); } catch (RemoteException e) { e.printStackTrace(); }