The Java Developers Almanac 1.4


Order this book from Amazon.

   
Home > List of Packages > java.rmi  [6 examples]

e192. Throwing an Exception from a Remote Method

1. Define the remote interface.
    import java.rmi.*;
    
    public interface RObject extends Remote {
        void aMethod() throws RemoteException;
    }
2. Define the remote object implementation.
    import java.rmi.*;
    import java.rmi.server.UnicastRemoteObject;
    
    public class RObjectImpl extends UnicastRemoteObject implements RObject {
        public RObjectImpl() throws RemoteException {
            super();
        }
        public void aMethod() throws RemoteException {
            // The actual exception must be wrapped in a RemoteException
            throw new RemoteException("message", new FileNotFoundException("message"));
        }
    }
3. Compile the remote object implementation.
    > javac RObject.java RObjectImpl.java
4. Generate the skeletons and stubs.
    > rmic RObjectImpl

5. Create an instance of the remote object and bind it to the RMI registry.
    try {
        RObject robj = new RObjectImpl();
        Naming.rebind("//localhost/RObjectServer", robj);
    } catch (MalformedURLException e) {
    } catch (UnknownHostException e) {
    } catch (RemoteException e) {
    }
6. Look up the remote object, invoke the method, and catch the exception.
    try {
        // Look up the remote object.
        RObject robj = (RObject) Naming.lookup("//localhost/RObjectServer");
    
        // Invoke the method.
        robj.aMethod();
    } catch (MalformedURLException e) {
    } catch (UnknownHostException e) {
    } catch (NotBoundException e) {
    } catch (RemoteException e) {
        // Get the actual exception that was thrown.
        Throwable realException = e.detail;
    }

 Related Examples
e187. Starting the RMI Registry
e188. Defining and Exporting a Remote Object
e189. Looking Up a Remote Object and Invoking a Method
e190. Passing Parameters to a Remote Method
e191. Returning Values from a Remote Method


© 2002 Addison-Wesley.