3.7.2.4.4 Description
Object deactivation is initiated either by the system or by the application, depending on the activation policy of the implementation for the CORBA object. The deactivate_object()
method is invoked before the CORBA object is deactivated. For details of these policies and their use, see the section ICF Syntax.
Deactivation may occur after an execution of a method invoked by
a client if the activation policy for the CORBA object
implementation is method
, or as a result of the end of
transactional work if the activation policy is
transaction.
It may also occur as the result of server
shutdown if the activation policy is transaction
or
process
.
In addition, the Oracle Tuxedo software supports the use of user-controlled deactivation of CORBA objects having an activation policy of process
or method
via the use of the TP::deactivateEnable()
and TP::deactivateEnable(-,-,-)
methods. TP::deactivateEnable
can be called inside a method of an object to cause the object to be deactivated at the end of the method. If TP::deactivateEnable
is called in an object with the transaction
activation policy, an exception is raised (TobjS::IllegalOperation
) and the TP Framework takes no action. TP::deactivateEnable(-,-,-)
can be called to deactivate any object that has a process
activation policy. For more information, see the section TP::deactivateEnable().
Note:
Thedeactivate_object
method will be called at server shutdown time for every object remaining in the Active Object Map, whether it was entered there implicitly by the TP Framework (the activation-on-demand technique: TP::create_servant
and the servant’s activate_object
method) or explicitly by the user with TP::create_active_object_reference
.
The activate_object()
and
deactivate_object()
methods and explicit methods
invoked by the client can be used by the programmer to manage
object state. The manner in which these methods are used to manage
object state may vary according to the needs of the application.
For a discussion of how these methods might be used, see
Creating CORBA Server Applications.
The CORBA object with transaction
activation policy
gets to vote on the outcome of the transaction when the
deactivate_object()
method is invoked with the
DR_TRANS_COMMITTING
reason code. By calling
Current.rollback_only()
the method can force the
transaction to be rolled back; otherwise, the two-phase commit
algorithm continues. The transaction will not necessarily be
committed just because Current.rollback_only()
is not
called in this method. Any other CORBA object or resource manager
involved in the transaction could also vote to roll back the
transaction.
Parent topic: Tobj_ServantBase::deactivate_object()