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.java
4. Generate the skeletons and stubs.
rmic RObjectImpl
5. Create an instance of RObjectImpl 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) {
}
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 RObjectImpl 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) {
}
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.java
4. Generate the skeletons and stubs.
rmic RObjectImpl
5. Create an instance of RObjectImpl 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) {
}
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 RObjectImpl 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) {
}
Comments
Post a Comment