What exactly is meant by the deactivation of a server object that was activated previously?
That it is possible to mean different things by object deactivation is a result of the complexity of the "machinery" that has to be brought into existence in order for an object to become activatable. For a server object to be activatable, it has to have associated with it the following:
- An activation group descriptor, of type ActivationGroupDesc, that contains the information necessary to create or recreate an activation group to which the object belongs. The RMI system will be able to spawn a new VM for each activation group. The information contained in an activation group descriptor is similar to what is needed for launching a new VM by the application launcher tool java and will, in at least the simpler cases, consist of the security policy to be used for the spawned VM's.
- A group identifier, of type ActivationGroupID, for each activation group descriptor that is registered with the activation system.
- An activation group, of type ActivationGroup, for each registered activation group descriptor; usually brought into existence as a side-effect of activating the first object corresponding to the registered activation group descriptor. The activation group is responsible for creating new instances of activatable objects in the group.
- An activation descriptor, of type ActivationDesc, that contains the information needed for activating an object. This information consists of the group identifier of the activation group in which the object resides, the object's class name, the location of the class, and initialization data in the form of a marshalled object.
- A Remote stub returned by registering the object activation descriptor with the activation system. This registration allows the object to be activated on demand.
- An entry in the RMI registry for the above stub.