help with CosNaming

Niclas Eklund <>
Tue Nov 13 15:13:19 CET 2001


Hello!

The most probable reason why it fails is that the two Orber-ORB's use the
same domain-name (default it is "ORBER"). Easily checked by invoking on
both ORB's:

erl> orber:info().


Hopefully you are using the latest ORB (at least a R7B-ORB). If so you
should use the Interoperable Name Service, especially since it's
compatible with other ORB's supporting the same standard (see '9.1.5
Writing a Client in Java' and '7.3 Interoperable Naming Service' in the
Orber User's Guide).

A few examples, let's start with accessing objects directly from the
NameService:

"Full version":
corba:string_to_object("corbaname:iiop::4001/NameService#StackFactory").

"Short hand":
corba:string_to_object("corbaname::tiger:4001/#StackFactory").
Default is iiop-protocol, IIOP-1.0 and "NameService". But, to be on the
safe side I guess it's better to use the full version.

If you want to access the local NameService you can write:
corba:string_to_object("corbaname:rir:/NameService#StackFactory").

Naturally you can supply a longer path (assuming that the 'kind'-field in 
the NameComponent == ""; see '7.3.3 corbaname' in the User's Guide):

corba:string_to_object("corbaname::tiger:4001/#org/erlang/StackFactory").

You can also just lookup the NameService reference:

corba:string_to_object("corbaloc:iiop::4001/NameService").

Currently Orber only allows "NameService" as key.

See also CosNaming_NamingContextExt in the reference manual.

Also explore the features which the configuration parameters 'orbInitRef'
and 'orbDefaultInitRef' supplies ('5.2 Configuration' in the User's
Guide).

/Nick



On Tue, 13 Nov 2001, Chandrashekhar Mullaparthi wrote:
> I'm experimenting with Orber/CORBA and need some help with the NameService.
> 
> I've compiled the example and run it successfully. Now I'm trying to run the
> stack_client from another erlang node. This is where the problems begin.
> 
> 1> NS = corba:resolve_initial_references_remote("NameService",
> ["iiop://tiger:4001"]).
> 
> works fine, though from a Windows client this call crashes the very first
> time and then works fine after that.
> 
> 2> 'CosNaming_NamingContext':list(NS, 10).
> returns
> {ok, [], BindingIterator}.
> 
> But if I execute the same command on the node where the orb is running, I
> get
> 5>
> {ok,[{'CosNaming_Binding',[{'CosNaming_NameComponent',"StackFactory",[]}],
>                           nobject}], BindingIterator}.
> 
> The documentation for CosNaming_NamingContext:bind/3 says:
> 
> "Creates a binding of a name and an object in the naming context. Naming
> contexts that are bound using bind() do not participate in name resolution."
> 
> I don't understand this. How does one bind a name to an object which can be
> resolved? Can someone please give me a version of the stack example which
> will work across nodes??
> 
> cheers,
> Chandru





More information about the erlang-questions mailing list