JavaTM Platform
Standard Ed. 6

软件包 org.omg.CosNaming

为 Java IDL 提供命名服务。

请参见:
          描述

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

类摘要
_BindingIteratorImplBase  
_BindingIteratorStub BindingIterator 接口允许客户端使用 next_one 或 next_n 操作在绑定上进行迭代。
_NamingContextExtStub NamingContextExtNamingContext(它包含一组名称绑定,在这些名称绑定中,每个名称都是唯一的)的扩展,并且是互操作命名服务 (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 NamingContextExtNamingContext(它包含一组名称绑定,在这些名称绑定中,每个名称都是唯一的)的扩展,并且是互操作命名服务 (Interoperable Naming Service) 的一部分。
NamingContextExtHolder NamingContextExtNamingContext(它包含一组名称绑定,在这些名称绑定中,每个名称都是唯一的)的扩展,并且是互操作命名服务 (Interoperable Naming Service) 的一部分。
NamingContextExtPOA NamingContextExtNamingContext(它包含一组名称绑定,在这些名称绑定中,每个名称都是唯一的)的扩展,并且是互操作命名服务 (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 类,这些类可视为辅助类。在这里提供有关接口 NamingContextBindingIterator 所使用的已生成辅助类的注释。

NamingContextBindingIterator 所使用的类

以下是命名服务所使用的类。(以下讨论为此处列出的每个类所生成的 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 类:IntHolderShortHolderStringHolder,等等。

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

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

Helper 类

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

Helper 类中只有一种供应用程序员使用的方法。narrow 方法。只有从 IDL 接口映射的 Java 接口才具有包含 narrow 方法的 helper 类,因此在 CosNaming 包中,只有类 NamingContextHelperBindingIteratorHelper 才具有 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. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策