名字服务(Naming Service,不过大家叫的更多的是命名服务)是CORBA的
最基本的服务之一。名字服务很简单,没有什么可说的。不过TAO对标准的名字
服务做了一个有趣的扩展,即可以利用multicast来得到名字服务。不过个人认
为除了方便了那么一点点之外,用处不大。而如果当局域网内有多个主机同时
运行名字服务时,会造成混乱。
此外,TAO还提供了NT_Naming_Service,可以将名字服务注册为NT的服务。
一. 启动名字服务
名字服务的文件名为:,它的启动参数有:
% Naming_Service [-ORBNameServicePort nsport]
[-o ior_output_file]
[-p pid_file_name]
[-s context_size]
[-t time]
[-f persitence_file_name]
[-b base_address]
[-m (1=enable multicast responses,0=disable(default)]
-ORBNameServicePort nsport:指定名字服务监听multicast包的端口号。
只有在使用了'-m 1'时才有效.
-o ior_output_file: 指定文件名, 用来保存名字服务的根上下文的IOR.
-p pid_file_name: 指定文件名,用来保存名字服务程序的进程id
-s context_size: 当创建上下文时, 指定新上下文使用的哈希表的大小, 默认1024
-t time: 名字服务监听的时间, 单位:秒. 默认: 无限
-f persistence_file_name: 指定文件名, 用来存放名字服务中被绑定的对象引用.
-m (1=enable multicast responses,0=disable(default): 是否使用多播功能.
运行名字服务时, 可以使用-ORBEndpoint参数来指定其运行的端点(有关
-ORBEndpoint的详细内容参见文档: $TAO_ROOT\docs\):
Naming_Service -ORBEndpoint iiop://localhost:2809 -m 0
(名字服务在本机的2809端口监听请求, 不使用多播方式)
二. 访问名字访问
这里均假定使用Naming_Service -ORBEndpoint iiop://localhost:2809 -m 0
来启动名字访问. 客户端有多种方法来访问名字服务:
第一种方法:
启动客户程序时用corbaloc指定初始引用:
MessengerServer -ORBInitRef NameService=corbaloc::localhost:2809/NameService
在MessengerServer源程序中, 直接使用:
orb->resolve_initial_references("NameService");
来得到名字服务.
第二种方法:
客户程序启动时不带参数:
MessengerServer
而在MessengerServer源程序中,
TAO名字服务的启动 来自淘豆网www.taodocs.com转载请标明出处.