Discussion:
AW: [omniORB] programmitcally start-stop naming server
Fischer, Clemens
2007-09-27 20:34:56 UTC
Permalink
Hi Kent,

your server might be located by clients in several other ways, without the need of a naming service. The problem is always: how does the client get a reference to the server's object?

A very simply way is to get an IOR string of the object reference by calling object_to_string, write that string to a file which can be read by a client. The client may then get the IOR string back from the file and call string_to_object to create the object stub.

A smarter solution would be to make the server locatable by a corbaloc URI, i.e. a string of the form "corbaloc:iiop:<host>:<port>/<objectkey>". Here the object reference is persistent, which means it is always the same and thus well-known to the client (and therefore does not need to be retrieved from a naming service or IOR file).

Read chapter 6 "Interoperable Naming Service" of the omniORB user's guide to learn more about this feature.

Clemens


-----Urspr?ngliche Nachricht-----
Von: omniorb-list-***@omniorb-support.com [mailto:omniorb-list-***@omniorb-support.com] Im Auftrag von Kent Gibson
Gesendet: Donnerstag, 27. September 2007 14:34
An: omniorb-***@omniorb-support.com
Betreff: [omniORB] programmitcally start-stop naming server

Is there any way that I can start and stop the naming
service (omniNames) programmatically?

Or can I somehow do without the naming service? and if
so how?

What I want to do is start everything up in one
windows dll. And then hopefully also shut everything
down in one dll.

This is what I am doing now:

orb = CORBA::ORB_init(x, &test);
CORBA::Object_var obj =
orb->resolve_initial_references("RootPOA");
PortableServer::POA_var poa =
PortableServer::POA::_narrow(obj);
Echo_i* myecho = new Echo_i();
PortableServer::ObjectId_var myechoid =
poa->activate_object(myecho);
// Obtain a reference to the object, and register it
in
// the naming service.
obj = myecho->_this();
CORBA::String_var x;
x = orb->object_to_string(obj);
cout << x << endl;
if( !bindObjectToName(orb, obj) )
{
return "unable to bind";
}

myecho->_remove_ref();
PortableServer::POAManager_var pman =
poa->the_POAManager();
pman->activate();
orb->run();

Any help would be grand.

thanks.




____________________________________________________________________________________
Tonight's top picks. What will you watch tonight? Preview the hottest shows on Yahoo! TV.
http://tv.yahoo.com/

Loading...