What exactly is meant by the deactivation of a server object that was activated previously?

Avi Kak

Although it could mean different things to different people, in my mind a reasonable definition of object deactivation is that 1) it should shut down the VM that was spawned by the activation system to activate the object; and 2) a client's request for service from the object should automatically spawn the VM again if it was shut down by a previous deactivation request.

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:

  1. 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.
  2. A group identifier, of type ActivationGroupID, for each activation group descriptor that is registered with the activation system.
  3. 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.
  4. 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.
  5. A Remote stub returned by registering the object activation descriptor with the activation system. This registration allows the object to be activated on demand.
  6. An entry in the RMI registry for the above stub.
So, by object deactivation one could conceivably mean different things depending on how exactly the server side is disabled with regard to incoming client requests, ranging presumably from the shutdown of the entire activation system, to the deactivation of the entire group in which the object resides, to the deactivation of just one object. Of course, when you shut down a VM, you would deactivate all the activated objects in the activation group corresponding to that VM.