[omniORB] RE: omniorb-list-digest V1 #180
Devin Venable
devin.venable@visionael.com
Mon, 31 Jul 2000 08:29:57 -0500
I've closed the Matrix so you can now make changes as needed.
Devin
-----Original Message-----
From: owner-omniorb-list-digest@uk.research.att.com
[mailto:owner-omniorb-list-digest@uk.research.att.com]
Sent: Monday, July 31, 2000 1:00 AM
To: omniorb-list-digest@uk.research.att.com
Subject: omniorb-list-digest V1 #180
omniorb-list-digest Monday, July 31 2000 Volume 01 : Number 180
In this issue:
[omniORB] ServantActivator problems
See the end of the digest for information about omniorb-list-digest.
----------------------------------------------------------------------
Date: Mon, 31 Jul 2000 01:48:56 -0400
From: Stefan Seefeld <seefelds@MAGELLAN.UMontreal.CA>
Subject: [omniORB] ServantActivator problems
hi,
I'm trying to run the following code but I get a runtime error
and a CORBA::Exception in the call to poa->set_servant_manager.
What am I doing wrong ?
- --------------------------------------------------------------
#include <iostream>
#include <omniORB3/CORBA.h>
class Activator : public virtual POA_PortableServer::ServantActivator
{
public:
Activator() {}
virtual ~Activator() {}
virtual PortableServer::Servant incarnate(const PortableServer::ObjectId
&oid,
PortableServer::POA_ptr poa)
throw (CORBA::SystemException, PortableServer::ForwardRequest)
{
return 0;
}
virtual void etherealize(const PortableServer::ObjectId &oid,
PortableServer::POA_ptr poa,
PortableServer::Servant servant,
CORBA::Boolean, CORBA::Boolean)
throw (CORBA::SystemException)
{
servant->_remove_ref();;
}
};
int main(int argc, char **argv)
{
try
{
CORBA::ORB_var orb = CORBA::ORB_init(argc, argv, "omniORB3");
CORBA::Object_var obj = orb->resolve_initial_references("RootPOA");
PortableServer::POA_var root_poa = PortableServer::POA::_narrow(obj);
PortableServer::POAManager_var pman = root_poa->the_POAManager();
pman->activate();
//Create an activator servant
Activator activator;
PortableServer::ServantManager_var manager = activator._this();
root_poa->set_servant_manager(manager);
orb->run();
orb->destroy();
}
catch(CORBA::SystemException&)
{
cerr << "Caught CORBA::SystemException." << endl;
}
catch(CORBA::Exception&)
{
cerr << "Caught CORBA::Exception." << endl;
}
catch(omniORB::fatalException& fe)
{
cerr << "Caught omniORB::fatalException:" << endl;
cerr << " file: " << fe.file() << endl;
cerr << " line: " << fe.line() << endl;
cerr << " mesg: " << fe.errmsg() << endl;
}
catch(...)
{
cerr << "Caught unknown exception." << endl;
}
return 0;
}
- --------------------------------------------------------------
the program produces the following output:
omniORB: ERROR -- A servant has been deleted that is still activated.
repo id:
id: root<0>
Caught CORBA::Exception.
Any help is highly appreciated !
Regards, Stefan
_______________________________________________________
Stefan Seefeld
Departement de Physique
Universite de Montreal
email: seefelds@magellan.umontreal.ca
_______________________________________________________
...ich hab' noch einen Koffer in Berlin...
------------------------------
End of omniorb-list-digest V1 #180
**********************************
This digest came to you via the omniorb-list-digest mailing list.
For more information see http://www.uk.research.att.com/omniorb/intouch.html