java.rmi.server
Class RemoteObject

java.lang.Object
  extended byjava.rmi.server.RemoteObject
All Implemented Interfaces:
Remote, Serializable
Direct Known Subclasses:
RemoteServer, RemoteStub

public abstract class RemoteObject
extends Object
implements Remote, Serializable

The RemoteObject class implements the java.lang.Object behavior for remote objects. RemoteObject provides the remote semantics of Object by implementing methods for hashCode, equals, and toString.

Since:
JDK1.1
Author:
Ann Wollrath, Laird Dornin, Peter Jones
See Also:
Serialized Form

Field Summary
protected  RemoteRef ref
          The object's remote reference.
private static long serialVersionUID
          indicate compatibility with JDK 1.1.x version of class
 
Constructor Summary
protected RemoteObject()
          Creates a remote object.
protected RemoteObject(RemoteRef newref)
          Creates a remote object, initialized with the specified remote reference.
 
Method Summary
 boolean equals(Object obj)
          Compares two remote objects for equality.
 RemoteRef getRef()
          Returns the remote reference for the remote object.
 int hashCode()
          Returns a hashcode for a remote object.
private  void readObject(ObjectInputStream in)
          readObject for custom serialization.
 String toString()
          Returns a String that represents the value of this remote object.
static Remote toStub(Remote obj)
          Returns the stub for the remote object obj passed as a parameter.
private  void writeObject(ObjectOutputStream out)
          writeObject for custom serialization.
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

ref

protected transient RemoteRef ref
The object's remote reference.


serialVersionUID

private static final long serialVersionUID
indicate compatibility with JDK 1.1.x version of class

See Also:
Constant Field Values
Constructor Detail

RemoteObject

protected RemoteObject()
Creates a remote object.


RemoteObject

protected RemoteObject(RemoteRef newref)
Creates a remote object, initialized with the specified remote reference.

Parameters:
newref - remote reference
Method Detail

getRef

public RemoteRef getRef()
Returns the remote reference for the remote object.

Note: The object returned from this method may be an instance of an implementation-specific class. The RemoteObject class ensures serialization portability of its instances' remote references through the behavior of its custom writeObject and readObject methods. An instance of RemoteRef should not be serialized outside of its RemoteObject wrapper instance or the result may be unportable.

Returns:
remote reference for the remote object
Since:
1.2

toStub

public static Remote toStub(Remote obj)
                     throws NoSuchObjectException
Returns the stub for the remote object obj passed as a parameter. This operation is only valid after the object has been exported.

Parameters:
obj - the remote object whose stub is neede
Returns:
the stub for the remote object, obj.
Throws:
NoSuchObjectException - if the stub for the remote object could not be found.
Since:
1.2

hashCode

public int hashCode()
Returns a hashcode for a remote object. Two remote object stubs that refer to the same remote object will have the same hash code (in order to support remote objects as keys in hash tables).

Overrides:
hashCode in class Object
Returns:
a hash code value for this object.
See Also:
Hashtable

equals

public boolean equals(Object obj)
Compares two remote objects for equality. Returns a boolean that indicates whether this remote object is equivalent to the specified Object. This method is used when a remote object is stored in a hashtable. If the specified Object is not itself an instance of RemoteObject, then this method delegates by returning the result of invoking the equals method of its parameter with this remote object as the argument.

Overrides:
equals in class Object
Parameters:
obj - the Object to compare with
Returns:
true if these Objects are equal; false otherwise.
See Also:
Hashtable

toString

public String toString()
Returns a String that represents the value of this remote object.

Overrides:
toString in class Object
Returns:
a string representation of the object.

writeObject

private void writeObject(ObjectOutputStream out)
                  throws IOException,
                         ClassNotFoundException
writeObject for custom serialization.

This method writes this object's serialized form for this class as follows:

The getRefClass method is invoked on this object's ref field to obtain its external ref type name. If the value returned by getRefClass was a non-null string of length greater than zero, the writeUTF method is invoked on out with the value returned by getRefClass, and then the writeExternal method is invoked on this object's ref field passing out as the argument; otherwise, the writeUTF method is invoked on out with a zero-length string (""), and then the writeObject method is invoked on out passing this object's ref field as the argument.

Throws:
IOException
ClassNotFoundException

readObject

private void readObject(ObjectInputStream in)
                 throws IOException,
                        ClassNotFoundException
readObject for custom serialization.

This method reads this object's serialized form for this class as follows:

The readUTF method is invoked on in to read the external ref type name for the RemoteRef instance to be filled in to this object's ref field. If the string returned by readUTF has length zero, the readObject method is invoked on in, and than the value returned by readObject is cast to RemoteRef and this object's ref field is set to that value. Otherwise, this object's ref field is set to a RemoteRef instance that is created of an implementation-specific class corresponding to the external ref type name returned by readUTF, and then the readExternal method is invoked on this object's ref field.

If the external ref type name is "UnicastRef", "UnicastServerRef", "UnicastRef2", "UnicastServerRef2", "ActivatableRef", or "ActivatableServerRef", a corresponding implementation-specific class must be found, and its readExternal method must read the serial data for that external ref type name as specified to be written in the serialData documentation for this class. If the external ref type name is any other string (of non-zero length), a ClassNotFoundException will be thrown, unless the implementation provides an implementation-specific class corresponding to that external ref type name, in which case this object's ref field will be set to an instance of that implementation-specific class.

Throws:
IOException
ClassNotFoundException