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; }

Post a comment

More information about formatting options

CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.
Image CAPTCHA
Enter the characters shown in the image. Ignore spaces and be careful about upper and lower case.