APIdia Launch Partner
Top Description Fields Constructors Methods
java.rmi.server

public abstract Class RemoteObject

extends Object
implements Remote, Serializable
Class Inheritance
All Implemented Interfaces
java.io.Serializable, java.rmi.Remote
Known Direct Subclasses
java.rmi.server.RemoteObjectInvocationHandler, java.rmi.server.RemoteServer, java.rmi.server.RemoteStub
Imports
java.io.IOException, java.rmi.Remote, .NoSuchObjectException, java.lang.reflect.Proxy, sun.rmi.server.Util

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.
Authors
Ann Wollrath, Laird Dornin, Peter Jones
Since
1.1

Field Summary

Modifier and TypeField and Description
protected transient RemoteRef
ref

The object's remote reference.

private static final long
serialVersionUID

indicate compatibility with JDK 1.1.x version of class

Constructor Summary

AccessConstructor and Description
protected
RemoteObject()

Creates a remote object.

protected
RemoteObject(RemoteRef
remote reference
newref
)

Creates a remote object, initialized with the specified remote reference.

Method Summary

Modifier and TypeMethod and Description
public boolean

Returns:

true if these Objects are equal; false otherwise.
equals
(Object
the Object to compare with
obj
)

Overrides java.lang.Object.equals.

Compares two remote objects for equality.

public RemoteRef

Returns:

remote reference for the remote object
getRef
()

Returns the remote reference for the remote object.

public int
hashCode()

Overrides java.lang.Object.hashCode.

Returns a hashcode for a remote object.

private void
readObject(ObjectInputStream
the ObjectInputStream from which data is read
in
)

readObject for custom serialization.

public String
toString()

Overrides java.lang.Object.toString.

Returns a String that represents the value of this remote object.

public static Remote

Returns:

the stub for the remote object, obj.
toStub
(Remote
the remote object whose stub is needed
obj
)

Returns the stub for the remote object obj passed as a parameter.

private void
writeObject(ObjectOutputStream
the ObjectOutputStream to which data is written
out
)

writeObject for custom serialization.

Inherited from java.lang.Object:
clonefinalizegetClassnotifynotifyAllwaitwaitwait

Field Detail

refback to summary
protected transient RemoteRef ref

The object's remote reference.

serialVersionUIDback to summary
private static final long serialVersionUID

indicate compatibility with JDK 1.1.x version of class

Annotations
@Serial

Constructor Detail

RemoteObjectback to summary
protected RemoteObject()

Creates a remote object.

RemoteObjectback to summary
protected RemoteObject(RemoteRef newref)

Creates a remote object, initialized with the specified remote reference.

Parameters
newref:RemoteRef

remote reference

Method Detail

equalsback to summary
public boolean equals(Object obj)

Overrides java.lang.Object.equals.

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.

Parameters
obj:Object

the Object to compare with

Returns:boolean

true if these Objects are equal; false otherwise.

See Also
java.util.Hashtable
getRefback to summary
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:RemoteRef

remote reference for the remote object

Since
1.2
hashCodeback to summary
public int hashCode()

Overrides java.lang.Object.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).

See Also
java.util.Hashtable
readObjectback to summary
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", or "UnicastServerRef2", 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.

Parameters
in:ObjectInputStream

the ObjectInputStream from which data is read

Annotations
@Serial
Exceptions
IOException:
if an I/O error occurs
ClassNotFoundException:
if a serialized class cannot be loaded
toStringback to summary
public String toString()

Overrides java.lang.Object.toString.

Returns a String that represents the value of this remote object.

toStubback to summary
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:Remote

the remote object whose stub is needed

Returns:Remote

the stub for the remote object, obj.

Annotations
@SuppressWarnings:deprecation
Exceptions
NoSuchObjectException:
if the stub for the remote object could not be found.
Since
1.2
writeObjectback to summary
private void writeObject(ObjectOutputStream out) throws IOException

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.

Parameters
out:ObjectOutputStream

the ObjectOutputStream to which data is written

Annotations
@Serial
Exceptions
IOException:
if an I/O error occurs
Serial data
The serialized data for this class comprises a string (written with ObjectOutput.writeUTF) that is either the external ref type name of the contained RemoteRef instance (the ref field) or a zero-length string, followed by either the external form of the ref field as written by its writeExternal method if the string was of non-zero length, or the serialized form of the ref field as written by passing it to the serialization stream's writeObject if the string was of zero length.

If this object is an instance of RemoteStub or RemoteObjectInvocationHandler that was returned from any of the UnicastRemoteObject.exportObject methods and custom socket factories are not used, the external ref type name is "UnicastRef". If this object is an instance of RemoteStub or RemoteObjectInvocationHandler that was returned from any of the UnicastRemoteObject.exportObject methods and custom socket factories are used, the external ref type name is "UnicastRef2". If this object is an instance of RemoteStub or RemoteObjectInvocationHandler that was returned from the RemoteObject.toStub method (and the argument passed to toStub was not itself a RemoteStub), the external ref type name is a function of how the remote object passed to toStub was exported, as described above. If this object is an instance of RemoteStub or RemoteObjectInvocationHandler that was originally created via deserialization, the external ref type name is the same as that which was read when this object was deserialized.

If this object is an instance of java.rmi.server.UnicastRemoteObject that does not use custom socket factories, the external ref type name is "UnicastServerRef". If this object is an instance of UnicastRemoteObject that does use custom socket factories, the external ref type name is "UnicastServerRef2".

Following is the data that must be written by the writeExternal method and read by the readExternal method of RemoteRef implementation classes that correspond to the each of the defined external ref type names:

For "UnicastRef":

For "UnicastRef2" with a null client socket factory:

For "UnicastRef2" with a non-null client socket factory:

For "UnicastServerRef" and "UnicastServerRef2", no data is written by the writeExternal method or read by the readExternal method.