7.2 Activation Protocol
During a remote method invocation, if
the "live" reference for a target object is unknown, the
faulting reference engages in the activation protocol. The
activation protocol involves several entities: the faulting
reference, the activator, an activation
group, and the remote object being activated.
The activator (usually one per host)
is the entity which supervises activation by being both:
- a database of information that maps
activation identifiers to the information necessary to activate an
object (the object's class, the location--a URL path--from which
the class can be loaded, specific data the object may need to
bootstrap, etc.), and
- a manager of Java virtual machines,
that starts up JVMs (when necessary) and forwards requests for
object activation (along with the necessary information) to the
correct activation group inside a remote JVM.
Note that the activator keeps the
current mapping of activation identifiers to active objects as a
cache, so that the group does not need to be consulted on each
activation request.
An activation group (one per JVM) is
the entity which receives a request to activate an object in the
JVM and returns the activated object back to the activator.
The activation protocol is as
follows. A faulting reference uses an activation identifier and
calls the activator (an internal RMI interface) to activate the
object associated with the identifier. The activator looks up the
object's activation descriptor (registered
previously). The object's descriptor contains:
- the object's group identifier,
specifying the JVM in which it is activated,
- the object's class name,
- a URL path from which to load the
object's class code, and
- object-specific initialization data
in marshalled form (initialization data might be the name of a file
containing the object's persistent state, for example).
If the activation group in which this
object should reside exists, the activator forwards the activation
request to that group. If the activation group does not exist, the
activator initiates a JVM executing an activation group and then
forwards the activation request to that group.
The activation group loads the class
for the object and instantiates the object using a special
constructor that takes several arguments, including the activation
descriptor registered previously.
When the object is finished
activating, the activation group passes back a marshalled
object reference to the activator that then records the
activation identifier and active reference pairing and returns the
active (live) reference to the faulting reference. The faulting
reference (inside the stub) then forwards method invocations via
the live reference directly to the remote object.
Note - In Java 2 SDK, Standard Edition, v
1.2, RMI provides an implementation of the activation system
interfaces. In order to use activation, you must first run the
activation system daemon rmid
.
CONTENTS | PREV | NEXT
Copyright 1997, 2010, Oracle and/or its affiliates. All rights
reserved.