[omniORB] deferred object deactivation

Renzo Tomaselli renzo.tomaselli@tecnotp.it
Mon, 25 Jun 2001 16:27:43 +0200


Hi all,
    after porting a multicomponent architecture from v2.8 to 3.04 (win32
platform, MSVC 6.0), I noticed that servant deactivation when a servant
activator is involved occurs in a deferred way since
omniOrbPOA::deactivate_object() places the servant onto a queue, even if
that servant is not busy.
If such a servant is located into a dll which is about to be unloaded when
deactivate_object is called (e.i. from a global destructor), the final
result is that method etherealize of the activator is called too late and an
exception occurs since the dll is gone and servant is dead.
That queue (see omniOrbPOA::add_object_to_etherealisation_queue) is an
OmniORB internal tool so that I don't know how to wait for it to flush in
order to safely unload the container dll.
Any suggestion to balance this semantics or to syncronize ?
Thanks,
                                             Renzo Tomaselli
---------------------------------------------------------------------------
TecnoTP s.n.c. Special Information System Design
Maso Pelauchi I38050 Ronchi Valsugana,  Trento TN  ITALY
Tel. +39 0461 773164      Fax. +39 0461 771514
e-mail: renzo.tomaselli@tecnotp.it
---------------------------------------------------------------------------