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兩個名字服務的工具.
有興趣的話編譯出來玩玩.:-)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章