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) {
} catch (RemoteException e) {
}