JavaTM Platform
Standard Ed. 6

软件包 org.omg.CosNaming

为 Java IDL 提供命名服务。

请参见:
          描述

接口摘要
BindingIterator BindingIterator 接口允许客户端使用 next_one 或 next_n 迭代绑定。
BindingIteratorOperations BindingIterator 接口允许客户端使用 next_one 或 next_n 迭代绑定。
NamingContext 命名上下文是包含一组名称绑定的对象,在这些名称绑定中,每个名称都是唯一的。
NamingContextExt NamingContextExt 是 NamingContext(它包含一组名称绑定,在这些名称绑定中,每个名称都是唯一的)的扩展,并且是互操作命名服务 (Interoperable Naming Service) 的一部分。
NamingContextExtOperations NamingContextExt 是 NamingContext(它包含一组名称绑定,在这些名称绑定中,每个名称都是唯一的)的扩展,并且是互操作命名服务 (Interoperable Naming Service) 的一部分。
NamingContextOperations 命名上下文是包含一组名称绑定的对象,在这些名称绑定中,每个名称都是唯一的。
 

类摘要
_BindingIteratorImplBase  
_BindingIteratorStub BindingIterator 接口允许客户端使用 next_one 或 next_n 操作在绑定上进行迭代。
_NamingContextExtStub NamingContextExt 是 NamingContext(它包含一组名称绑定,在这些名称绑定中,每个名称都是唯一的)的扩展,并且是互操作命名服务 (Interoperable Naming Service) 的一部分。
_NamingContextImplBase  
_NamingContextStub 命名上下文是包含一组名称绑定的对象,在这些名称绑定中,每个名称都是唯一的。
Binding org/omg/CosNaming/Binding.java。
BindingHelper org/omg/CosNaming/BindingHelper.java。
BindingHolder org/omg/CosNaming/BindingHolder.java。
BindingIteratorHelper BindingIterator 接口允许客户端使用 next_one 或 next_n 操作迭代绑定。
BindingIteratorHolder BindingIterator 接口允许客户端使用 next_one 或 next_n 操作迭代绑定。
BindingIteratorPOA BindingIterator 接口允许客户端使用 next_one 或 next_n 操作迭代绑定。
BindingListHelper 绑定列表。
BindingListHolder 绑定列表。
BindingType 指定给定的绑定对应于对象(非命名上下文的对象)还是命名上下文。
BindingTypeHelper 指定给定的绑定对应于对象(非命名上下文的对象)还是命名上下文。
BindingTypeHolder 指定给定的绑定是对象(非命名上下文的对象)的还是命名上下文的。
IstringHelper org/omg/CosNaming/IstringHelper.java。
NameComponent org/omg/CosNaming/NameComponent.java。
NameComponentHelper org/omg/CosNaming/NameComponentHelper.java。
NameComponentHolder org/omg/CosNaming/NameComponentHolder.java。
NameHelper 名称是名称组件的序列。
NameHolder 名称是名称组件的序列。
NamingContextExtHelper NamingContextExt 是 NamingContext(它包含一组名称绑定,在这些名称绑定中,每个名称都是唯一的)的扩展,并且是互操作命名服务 (Interoperable Naming Service) 的一部分。
NamingContextExtHolder NamingContextExt 是 NamingContext(它包含一组名称绑定,在这些名称绑定中,每个名称都是唯一的)的扩展,并且是互操作命名服务 (Interoperable Naming Service) 的一部分。
NamingContextExtPOA NamingContextExt 是 NamingContext(它包含一组名称绑定,在这些名称绑定中,每个名称都是唯一的)的扩展,并且是互操作命名服务 (Interoperable Naming Service) 的一部分。
NamingContextHelper 命名上下文是包含一组名称绑定的对象,在这些名称绑定中,每个名称都是唯一的。
NamingContextHolder 命名上下文是包含一组名称绑定的对象,在这些名称绑定中,每个名称都是唯一的。
NamingContextPOA 命名上下文是包含一组名称绑定的对象,在这些名称绑定中,每个名称都是唯一的。
 

软件包 org.omg.CosNaming 的描述

为 Java IDL 提供命名服务。对象请求代理守护程序(Object Request Broker Daemon,ORBD)还包括瞬态和持久命名服务。

该包及其所有类和接口都是通过在 nameservice.idl 文件上运行 idlj 工具生成的,该文件是用 OMG IDL 编写的模块。

包规范

有关 Java[tm] Platform, Standard Edition 6 ORB 遵守的官方规范的受支持部分的明确列表,请参阅 Official Specifications for CORBA support in Java[tm] SE 6。

接口

org.omg.CosNaming 包包含两个公共接口和若干辅助类。

这两个接口是:

这两个接口提供了一些方法,有些用来绑定/取消绑定名称和对象引用,有些用来检索绑定的对象引用,还有些用来迭代绑定列表。NamingContext 接口提供命名服务的主要功能,BindingIterator 提供迭代名称/对象引用绑定列表的各种方法。

辅助类

为了将 OMG IDL 接口映射到 Java 编程语言,idlj 编译器创建了一些 Java 类,这些类可视为辅助类。在这里提供有关接口 NamingContext 和 BindingIterator 所使用的已生成辅助类的注释。

NamingContext 和 BindingIterator 所使用的类

以下是命名服务所使用的类。(以下讨论为此处列出的每个类所生成的 helper 和 holder 类。)

Holder 类

OMG IDL 使用 OUT 和 INOUT 参数从操作返回值。到 Java 编程语言的映射(不具有 OUT 和 INOUT 参数)为每个类型创建一个特殊类,称为 holder 类。可以将 holder 类的实例作为参数传递给 Java 方法,并可以为该实例的 value 字段分配值。这允许它执行 OUT 和 INOUT 参数的功能。

以下是为 org.omg.CosNaming 包生成的 holder 类:

注意,在 org.omg.CORBA 包中,每个基本 Java 类型都有一个 holder 类:IntHolder、ShortHolder、StringHolder,等等。

另请注意,即使不存在 Name 类,也会存在一个 NameHolder 类;类似地,即使不存在 BindingList 类,也会存在一个 BindingListHolder 类。出现这种现象是因为在 OMG IDL 接口中,Name 和 BindingList 都是 typedef。不存在从 IDL typedef 到 Java 结构的映射,但是如果 typedef 用于序列或数组,则会生成 holder 类。与映射到 Java 编程语言一样,Name 是 NameComponent 对象数组,BindingList 是 Binding 对象数组。 所有 holder 类都具有至少两个构造方法和一个字段:

为用户定义类型(Java 类)创建的 holder 类另外还有三种方法,但是应用程序开发人员不直接使用它们。

Helper 类

Helper 类是为 OMG IDL 接口中所有用户定义类型生成的,提供操作这些类型所需的静态方法。

Helper 类中只有一种供应用程序员使用的方法。narrow 方法。只有从 IDL 接口映射的 Java 接口才具有包含 narrow 方法的 helper 类,因此在 CosNaming 包中,只有类 NamingContextHelper 和 BindingIteratorHelper 才具有 narrow 方法。

org.omg.CosNaming.NamingContextPackage 包

此包为 org.omg.CosNaming 包中使用的异常以及 NotFoundReason 类(为 NotFound 异常提供原因)提供 Helper 和 Holder 类。

为以下异常提供 Helper 和 Holder 类:

命名服务兼容性

Sun CosNaming 包的实现遵守 OMG COSNaming 规范。换句话说,Sun 命名服务中的 API 根据 OMG 提供的命名服务指南实现。因此,如果第三方供应商已实现与 OMG 兼容的命名服务,则可以在 Sun 的 CosNaming 实现和第三方供应商的实现之间切换。然而,不同供应商实现命名服务的方式可能稍有不同(如异常字符串不同),理解这一点很重要。

第三方命名服务用法说明

尽管我们鼓励使用出自同一个供应商的 ORB 和 ORB 服务,但使用 Sun 的 RMI-IIOP ORB 插入第三方的 COSNaming 实现也是可能的。以下是要执行的步骤:
  1. 为 Bootstrap 服务器创建属性文件,并在该文件中给出两个条目。例如,可以将此属性文件称为 /tmp/services,并将以下内容置于其中:NameService, <Stringified IOR of the Root Naming Context>。

    此操作将 NameService 与要使用的 CosNaming 实现的根命名上下文 (Root Naming Context) 相关联。

  2. 使用以下命令启动独立的 Bootstrap 服务器:
          
          java -classpath $(CLASSPATH)
          com.sun.corba.ee.internal.CosNaming.BootstrapServer -InitialServicesFile
          "/tmp/services" [-ORBInitialPort port]
          
      

    注意,位于命令末尾的方括号指示指定一个可选的端口号。

这时,如果应用程序调用 org.omg.CORBA.ORB.resolve_initial_references 方法,则 CORBA 进程将联系 Bootstrap 服务器来获取根命名上下文。

包规范

相关文档

有关如何使用 CosNaming API 的概述和示例,请参阅:

有关 Java IDL 概述,请参阅:

从以下版本开始:
JDK1.3

JavaTM Platform
Standard Ed. 6

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策。