[omniORB] ORB and POA reinitialization question.

Vinaya Kavathekar vinaya@marathontechnologies.com
Wed Aug 28 17:14:10 2002


I have a client that must intermittently change servers (connect to system A
instead of B) upon user request. The easiest way for me to achieve this
behavior - since it isn't necessary for the client to maintain previous
state - is to clean up all prior objects and start over as if from the
start. [The servers use omniINSPOA and persistent object references.] 

While changing systems, I issue an orb->shutdown() to clean-up the clients
current state and then the reinitialization goes through the same process as
startup. 

    ORB_init(argCount, argArr, "omniORB3");
    CORBA::Object_var poa_obj = orb->resolve_initial_references("RootPOA");
    poa = PortableServer::POA::_narrow(poa_obj);
    CORBA::release(poa);
    PortableServer::POAManager_var pman = poa->the_POAManager();
    pman->activate();

The init call succeeds (after changing orb->destroy() to orb->shutdown(),
which makes sense) but the call to resolve_initial_references fails with a
BAD_INV_ORDER.  

Question:
 Is it impossible to reinitialize a POA, as the following message suggests?
If so, how can I achieve the desired effect?
 http://www.realvnc.com/pipermail/omniorb-list/2000-January/004074.html

Thanks,
Vinaya