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

public Class UnicastRemoteObject

extends RemoteServer
Class Inheritance
Imports
java.io.IOException, .ObjectInputFilter, java.rmi.*, sun.rmi.server.UnicastServerRef, .UnicastServerRef2, sun.rmi.transport.LiveRef

Used for exporting a remote object with JRMP and obtaining a stub that communicates to the remote object. Stubs are generated at runtime using dynamic proxy objects.

Deprecated: Static Stubs. Support for statically generated stubs is deprecated. This includes the API in this class that requires the use of static stubs, as well as the runtime support for loading static stubs. Generating stubs dynamically is preferred, using one of the non-deprecated ways of exporting objects as listed below.

There are eight ways to export remote objects:

  1. Subclassing UnicastRemoteObject and calling the UnicastRemoteObject() constructor.
  2. Subclassing UnicastRemoteObject and calling the UnicastRemoteObject(port) constructor.
  3. Subclassing UnicastRemoteObject and calling the UnicastRemoteObject(port, csf, ssf) constructor.
  4. Calling the exportObject(Remote) method. Deprecated.
  5. Calling the exportObject(Remote, port) method.
  6. Calling the exportObject(Remote, port, csf, ssf) method.
  7. Calling the exportObject(Remote, port, filter) method.
  8. Calling the exportObject(Remote, port, csf, ssf, filter) method.

The fourth technique, exportObject(Remote), always uses statically generated stubs and is deprecated.

The other techniques all use the following approach: if the java.rmi.server.ignoreStubClasses property is true (case insensitive) or if a static stub cannot be found, stubs are generated dynamically using Proxy objects. Otherwise, static stubs are used.

The default value of the java.rmi.server.ignoreStubClasses property is false.

Statically generated stubs are typically pregenerated from the remote object's class. A static stub is loaded and an instance of that stub class is constructed as described below.

Stubs are dynamically generated by constructing an instance of a Proxy with the following characteristics:

Exported remote objects receive method invocations from the stubs as described in the RMI specification. Each invocation's operation and parameters are unmarshaled using a custom java.io.ObjectInputStream. If an ObjectInputFilter is provided and is not null when the object is exported, it is used to filter the parameters as they are unmarshaled from the stream. The filter is used for all invocations and all parameters regardless of the method being invoked or the parameter values. If no filter is provided or is null for the exported object then the ObjectInputStream default filter, if any, is used. The default filter is configured with ObjectInputFilter.Config.setSerialFilter. If the filter rejects any of the parameters, the InvalidClassException thrown by ObjectInputStream is reported as the cause of an UnmarshalException.

Implementation Note

Depending upon which constructor or static method is used for exporting an object, RMISocketFactory may be used for creating sockets. By default, server sockets created by RMISocketFactory listen on all network interfaces. See the RMISocketFactory class and the section RMI Socket Factories in the Java RMI Specification.

Authors
Ann Wollrath, Peter Jones
Since
1.1

Field Summary

Modifier and TypeField and Description
private RMIClientSocketFactory
private int
private static final long
private RMIServerSocketFactory

Constructor Summary

AccessConstructor and Description
protected
UnicastRemoteObject()

Creates and exports a new UnicastRemoteObject object using an anonymous port.

protected
UnicastRemoteObject(int
the port number on which the remote object receives calls (if port is zero, an anonymous port is chosen)
port
)

Creates and exports a new UnicastRemoteObject object using the particular supplied port.

protected
UnicastRemoteObject(int
the port number on which the remote object receives calls (if port is zero, an anonymous port is chosen)
port
,
RMIClientSocketFactory
the client-side socket factory for making calls to the remote object
csf
,
RMIServerSocketFactory
the server-side socket factory for receiving remote calls
ssf
)

Creates and exports a new UnicastRemoteObject object using the particular supplied port and socket factories.

Method Summary

Modifier and TypeMethod and Description
public Object

Returns:

the new remote object
clone
()

Overrides java.lang.Object.clone.

Returns a clone of the remote object that is distinct from the original.

public static RemoteStub

Returns:

remote object stub
exportObject
(Remote
the remote object to be exported
obj
)
Deprecated This method is deprecated because it supports only static stubs.

Exports the remote object to make it available to receive incoming calls using an anonymous port.

public static Remote

Returns:

remote object stub
exportObject
(Remote
the remote object to be exported
obj
,
int
the port to export the object on
port
)

Exports the remote object to make it available to receive incoming calls, using the particular supplied port.

public static Remote

Returns:

remote object stub
exportObject
(Remote
the remote object to be exported
obj
,
int
the port to export the object on
port
,
RMIClientSocketFactory
the client-side socket factory for making calls to the remote object
csf
,
RMIServerSocketFactory
the server-side socket factory for receiving remote calls
ssf
)

Exports the remote object to make it available to receive incoming calls, using a transport specified by the given socket factory.

public static Remote

Returns:

remote object stub
exportObject
(Remote
the remote object to be exported
obj
,
int
the port to export the object on
port
,
ObjectInputFilter
an ObjectInputFilter applied when deserializing invocation arguments; may be null
filter
)

Exports the remote object to make it available to receive incoming calls, using the particular supplied port and filter.

public static Remote

Returns:

remote object stub
exportObject
(Remote
the remote object to be exported
obj
,
int
the port to export the object on
port
,
RMIClientSocketFactory
the client-side socket factory for making calls to the remote object
csf
,
RMIServerSocketFactory
the server-side socket factory for receiving remote calls
ssf
,
ObjectInputFilter
an ObjectInputFilter applied when deserializing invocation arguments; may be null
filter
)

Exports the remote object to make it available to receive incoming calls, using a transport specified by the given socket factory and filter.

private static Remote
exportObject(Remote obj, UnicastServerRef sref)
References Deprecated UnicastServerRef is deprecated or references (maybe indirectly) at least one deprecated element.

Exports the specified object using the specified server ref.

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

Hides java.rmi.server.RemoteObject.readObject.

Re-export the remote object when it is deserialized.

private void
public static boolean

Returns:

true if operation is successful, false otherwise
unexportObject
(Remote
the remote object to be unexported
obj
,
boolean
if true, unexports the object even if there are pending or in-progress calls; if false, only unexports the object if there are no pending or in-progress calls
force
)

Removes the remote object, obj, from the RMI runtime.

Inherited from java.rmi.server.RemoteServer:
getClientHostgetLogsetLog

Field Detail

csfback to summary
private RMIClientSocketFactory csf
Annotations
@SuppressWarnings:serial
portback to summary
private int port
serialVersionUIDback to summary
private static final long serialVersionUID

Hides java.rmi.server.RemoteServer.serialVersionUID.

Annotations
@Serial
ssfback to summary
private RMIServerSocketFactory ssf
Annotations
@SuppressWarnings:serial

Constructor Detail

UnicastRemoteObjectback to summary
protected UnicastRemoteObject() throws RemoteException

Creates and exports a new UnicastRemoteObject object using an anonymous port.

The object is exported with a server socket created using the RMISocketFactory class.

Exceptions
RemoteException:
if failed to export object
Since
1.1
UnicastRemoteObjectback to summary
protected UnicastRemoteObject(int port) throws RemoteException

Creates and exports a new UnicastRemoteObject object using the particular supplied port.

The object is exported with a server socket created using the RMISocketFactory class.

Parameters
port:int

the port number on which the remote object receives calls (if port is zero, an anonymous port is chosen)

Exceptions
RemoteException:
if failed to export object
Since
1.2
UnicastRemoteObjectback to summary
protected UnicastRemoteObject(int port, RMIClientSocketFactory csf, RMIServerSocketFactory ssf) throws RemoteException

Creates and exports a new UnicastRemoteObject object using the particular supplied port and socket factories.

Either socket factory may be null, in which case the corresponding client or server socket creation method of RMISocketFactory is used instead.

Parameters
port:int

the port number on which the remote object receives calls (if port is zero, an anonymous port is chosen)

csf:RMIClientSocketFactory

the client-side socket factory for making calls to the remote object

ssf:RMIServerSocketFactory

the server-side socket factory for receiving remote calls

Exceptions
RemoteException:
if failed to export object
Since
1.2

Method Detail

cloneback to summary
public Object clone() throws CloneNotSupportedException

Overrides java.lang.Object.clone.

Returns a clone of the remote object that is distinct from the original.

Returns:Object

the new remote object

Exceptions
CloneNotSupportedException:
if clone failed due to a RemoteException.
Since
1.1
exportObjectback to summary
public static RemoteStub exportObject(Remote obj) throws RemoteException

Deprecated

This method is deprecated because it supports only static stubs. Use exportObject(Remote, port) or exportObject(Remote, port, csf, ssf) instead.

Exports the remote object to make it available to receive incoming calls using an anonymous port. This method will always return a statically generated stub.

The object is exported with a server socket created using the RMISocketFactory class.

Parameters
obj:Remote

the remote object to be exported

Returns:RemoteStub

remote object stub

Annotations
@Deprecated
Exceptions
RemoteException:
if export fails
Since
1.1
exportObjectback to summary
public static Remote exportObject(Remote obj, int port) throws RemoteException

Exports the remote object to make it available to receive incoming calls, using the particular supplied port.

The object is exported with a server socket created using the RMISocketFactory class.

Parameters
obj:Remote

the remote object to be exported

port:int

the port to export the object on

Returns:Remote

remote object stub

Exceptions
RemoteException:
if export fails
Since
1.2
exportObjectback to summary
public static Remote exportObject(Remote obj, int port, RMIClientSocketFactory csf, RMIServerSocketFactory ssf) throws RemoteException

Exports the remote object to make it available to receive incoming calls, using a transport specified by the given socket factory.

Either socket factory may be null, in which case the corresponding client or server socket creation method of RMISocketFactory is used instead.

Parameters
obj:Remote

the remote object to be exported

port:int

the port to export the object on

csf:RMIClientSocketFactory

the client-side socket factory for making calls to the remote object

ssf:RMIServerSocketFactory

the server-side socket factory for receiving remote calls

Returns:Remote

remote object stub

Exceptions
RemoteException:
if export fails
Since
1.2
exportObjectback to summary
public static Remote exportObject(Remote obj, int port, ObjectInputFilter filter) throws RemoteException

Exports the remote object to make it available to receive incoming calls, using the particular supplied port and filter.

The object is exported with a server socket created using the RMISocketFactory class.

Parameters
obj:Remote

the remote object to be exported

port:int

the port to export the object on

filter:ObjectInputFilter

an ObjectInputFilter applied when deserializing invocation arguments; may be null

Returns:Remote

remote object stub

Exceptions
RemoteException:
if export fails
Since
9
exportObjectback to summary
public static Remote exportObject(Remote obj, int port, RMIClientSocketFactory csf, RMIServerSocketFactory ssf, ObjectInputFilter filter) throws RemoteException

Exports the remote object to make it available to receive incoming calls, using a transport specified by the given socket factory and filter.

Either socket factory may be null, in which case the corresponding client or server socket creation method of RMISocketFactory is used instead.

Parameters
obj:Remote

the remote object to be exported

port:int

the port to export the object on

csf:RMIClientSocketFactory

the client-side socket factory for making calls to the remote object

ssf:RMIServerSocketFactory

the server-side socket factory for receiving remote calls

filter:ObjectInputFilter

an ObjectInputFilter applied when deserializing invocation arguments; may be null

Returns:Remote

remote object stub

Exceptions
RemoteException:
if export fails
Since
9
exportObjectback to summary
private static Remote exportObject(Remote obj, UnicastServerRef sref) throws RemoteException

References Deprecated

UnicastServerRef is deprecated or references (maybe indirectly) at least one deprecated element.

See corresponding docs for further information.

Exports the specified object using the specified server ref.

readObjectback to summary
private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException

Hides java.rmi.server.RemoteObject.readObject.

Re-export the remote object when it is deserialized.

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
reexportback to summary
private void reexport() throws RemoteException
unexportObjectback to summary
public static boolean unexportObject(Remote obj, boolean force) throws NoSuchObjectException

Removes the remote object, obj, from the RMI runtime. If successful, the object can no longer accept incoming RMI calls. If the force parameter is true, the object is forcibly unexported even if there are pending calls to the remote object or the remote object still has calls in progress. If the force parameter is false, the object is only unexported if there are no pending or in progress calls to the object.

Parameters
obj:Remote

the remote object to be unexported

force:boolean

if true, unexports the object even if there are pending or in-progress calls; if false, only unexports the object if there are no pending or in-progress calls

Returns:boolean

true if operation is successful, false otherwise

Exceptions
NoSuchObjectException:
if the remote object is not currently exported
Since
1.2