TAO使用指南 -- 名字服务

名字服务(Naming Service,不过大家叫的更多的是命名服务)是CORBA的最基本的服务之一。名字服务很简单,没有什么可说的。不过TAO对标准的名字服务做了一个有趣的扩展,即可以利用ulticast来得到名字服务。不过个人认为除了方便了那么一点点之外,用处不大。而如果当局域网内有多个主机同时运行名字服务时,会造成混乱。
此外,TAO还提供了NT_Naming_Service,可以将名字服务注册为NT的服务。

一. 启动名字服务
名字服务的文件名为:Naming_Service.exe,它的启动参数有:
% 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/ORBEndpoint.html):

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源程序中, 使用:
orb->string_to_object("corbaloc::localhost:2809/NameService");
来得到名字服务.

三. TAO_Naming_Client和TAO_Naming_Server类:
1. TAO_Naming_Client类: 将访问名字服务部分的代码进行了封装. 使用方法:
//---------------------------------------------
#include <Naming/Naming_Utils.h>

TAO_Naming_Client naming_client;
if (naming_client.init(orb.in()) != 0)
{
cerr << "Could not initialize naming client." << endl;
return 1;
}
// 解析
CORBA::Object_var obj = naming_client->resolve(name);
// 绑定
naming_client->rebind(name, obj_ref.in());

2. TAO_Naming_Server类: 使用该类, 可以将名字服务功能集成到自己的应用
程序中.
有关TAO_Naming_Server类的使用方法, 见: 咦, 这个例程不在TAO的标准包
中, 是OCI公司的examples. 我硬盘上的这个忘了是从那里下载的了, 如果有人需
要的话给我写信好了.

四. 名字服务工具
在$TAO_ROOT/utils目录下, 有NamingViewer和nslist两个名字服务的工具.
有兴趣的话编译出来玩玩.:-)
阅读更多
个人分类: ACE网络编程
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭