![]() |
The Java Developers Almanac 1.4Order this book from Amazon. |
e191. Returning Values from a Remote MethodReturn values from remote methods must be primitive, serializable, or implementRemote . This example demonstrates the declaration and use
of all three return types.
1. Define the remote interface. import java.rmi.*; public interface RObject extends Remote { // This return value is primitive. int primitiveRet() throws RemoteException; // This return value implements Serializable. Integer byValueRet() throws RemoteException; // This return value implements Remote. ArgObject byRefRet() throws RemoteException; } public interface ArgObject extends Remote { int 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 int primitiveRet() throws RemoteException { return 3000; } public Integer byValueRet() throws RemoteException { return new Integer(2000); } public ArgObject byRefRet() throws RemoteException { return new ArgObjectImpl(); } }3. Compile the remote object implementation. > javac RObject.java RObjectImpl.java4. Generate the skeletons and stubs. > rmic RObjectImpl5. 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 methods, and receive the return values. try { // Look up the remote object RObject robj = (RObject) Naming.lookup("//localhost/RObjectServer"); // Receive the primitive value as return value int r1 = robj.primitiveRet(); // Receive the serializable object as return value Integer r2 = robj.byValueRet(); // Receive the Remote Object as return value ArgObject aobj = robj.byRefRet(); } catch (MalformedURLException e) { } catch (UnknownHostException e) { } catch (NotBoundException e) { } catch (RemoteException e) { }
e188. Defining and Exporting a Remote Object e189. Looking Up a Remote Object and Invoking a Method e190. Passing Parameters to a Remote Method e192. Throwing an Exception from a Remote Method © 2002 Addison-Wesley. |