参考文章:
http://blog.csdn.net/billdavid/article/details/726351
服务端启动完成后,Naming Service就默默在那里工作了,但是,你的servant和client如何访问它呢?
要在Server和Client程序中访问NameService有两种方法:
1、配置InitRef信息:
可以在启动orb时通过-ORBInitRef来定位,如:
-ORBInitRef NameService=IOR:00ff...
或使用corbaname,如:
-ORBInitRef NameService=corbaname::localhost:2809
指定NameService所在地址和端口。
也可采用corbaloc来指定NameService的运行信息,如:
-ORBInitRef NameService=corbaloc:iiop:1.2@localhost:2809/NameService
在这里,corbaloc/corbaname被用于以更具有可读性的方式来定位servant。
eg
argc=1;
argv[1] = "-ORBInitRef NameService=corbaloc:iiop:192.168.0.20:5980/NameService";
CORBA::ORB_var orb = CORBA::ORB_init(argc, argv);
CORBA::ORB_var g_orb = CORBA::ORB::_duplicate(orb.in());
“192.168.0.20”:即开启命名服务的地址,5980即命名服务所监听的端口;
2、配置好InitRef后,程序中就可以通过:
orb->resolve_initial_references("NameService");
访问到NameService了。
访问Naming Service的另一种方式则是传递Naming Service的IOR串,然后通过:
orb->string_to_object(...);
从IOR串连接到相应的Naming Service,因为NameService只不过是一个特殊的servant。