CORBA 程序中,获取 CORBA 对象有通过命名服务和可操作对象引用 (Interoperable Object Reference,IOR) 两种方式。
IOR 存储几乎所有 ORB(Object Request Broker, 对象请求代理 ) 间协议信息,用于建立客户机和目标对象之间的通信,为 ORB 的互操作提供标准化的对象引用格式。每个 IOR 指定一个或多个所支持的协议,对于每个协议, IOR 包括那个协议所专有的信息。对于 IIOP ,每个 IOR 包括一个主机名, TCP/IP 端口号和一个对象密钥,密钥根据所给出的主机名和端口组合来识别目标对象。一个 IOR 主要有三个部分组成:仓库 ID ,终点信息和对象密钥。
IOR 将所有的 ORB 信息编码在一个字符串中,应用程序通过这个 IOR 字符串就可以获得所要操作的 CORBA 对象,一个 IOR 的例子如下:
IOR:000000000000001749444C3A48656C6C6F4170702F48656C6C6F3A312E30000000000001000000000000005C0
00102000000000C31302E3134302E312E393700290500000000002A5374616E64617264496D706C4E616D652F5065
7273697374656E74504F412F4D7948656C6C6F496D706C0000000000010000000000000008000000004A414300
使用 Jacorb 的 dior 命令可以解析 IOR 字符串的内容,上面的 IOR 解析后的内容为:
TypeId : IDL:HelloApp/Hello:1.0
TAG_INTERNET_IOP Profiles:
Profile Id: 0
IIOP Version: 1.2