所有类
|
|||||||||
软件包 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 2 平台、标准版 v.1.4 ORB 遵守的官方规范的受支持部分的明确列表,请参阅 Official Specifications for CORBA support in J2SE 1.4。
接口
org.omg.CosNaming 包包含两个公共接口和若干辅助类。这两个接口是:
- NamingContext
- BindingIterator
这两个接口提供了一些方法,有些用来绑定/取消绑定名称和对象引用,有些用来检索绑定的对象引用,还有些用来迭代绑定列表。NamingContext
接口提供命名服务的主要功能,BindingIterator
提供迭代名称/对象引用绑定列表的各种方法。
辅助类
为了将 OMG IDL 接口映射到 Java 编程语言,idlj 编译器创建了一些 Java 类,这些类可视为辅助类。在这里提供有关接口NamingContext
和 BindingIterator
所使用的已生成辅助类的注释。
NamingContext
和 BindingIterator
所使用的类
以下是命名服务所使用的类。(以下讨论为此处列出的每个类所生成的 helper 和 holder 类。)
public final class NameComponent
- 名称的构建块 (building block)。(名称被绑定到命名上下文中的对象引用。)名称是一个或多个
NameComponent
对象所组成的数组。带有单个NameComponent
的名称称为简单名称;带有多个NameComponent
对象的名称称为组合名称。NameComponent
对象由两个字段组成:id
- 用作标识符的String
kind
- 可用于任何描述性内容的String
。其重要性在于,可以使用它来描述对象,但不会影响到语法。例如,C 编程语言使用这样的语法约定:将扩展名 ".c" 附加到文件名上指示其为源代码文件。在NameComponent
对象中,kind
字段可用于描述对象类型,而不是文件扩展名或其他语法约定。kind
字段值的示例如下:字符串"c_source"
、"object_code"
、"executable"
、"postscript"
和""
。kind
字段为空字符串也很常见。
在名称中,每个
NameComponent
对象(除了最后一个)都表示一个NamingContext
对象;最后一个NameComponent
对象表示绑定的对象引用。这类似于路径名,路径名中最后一个名称是文件名,而前面的所有名称都是目录名。public final class Binding
- 将名称与对象引用或命名上下文关联的对象。Binding
对象具有两个字段:binding_name
- 表示绑定名称的一个或多个NameComponent
对象所组成的数组binding_type
-BindingType
对象,该对象指示绑定发生在名称和对象引用之间,还是发生在名称和命名上下文之间
NamingContext
接口具有一些方法,其中有些用来绑定/取消绑定名称与对象引用或命名上下文,有些用来列举绑定,还有些用来解析绑定(给定名称时,resolve
方法返回绑定到它的对象引用)。public final class BindingType
- 一个对象,指定给定的Binding
对象是名称与对象引用(即非命名上下文)之间的绑定还是名称与命名上下文之间的绑定。BindingType
类由两个方法和四个常量组成。这些常量中有两个是BindingType
对象,另外两个是int
。BindingType
对象可以传递到Binding
类的构造方法,也可以用作参数或返回值。这些BindingType
对象是:public static final BindingType nobject
- 指示是与对象引用之间的绑定public static final BindingType ncontext
- 指示是与命名上下文之间的绑定
int
常量可以提供给from_int
方法以创建BindingType
对象,也可以作为value
方法的返回值。这些常量是:public static final int _nobject
public static final int _ncontext
from_int
方法带有的参数是_nobject
或_ncontext
之外的任何内容,则它将抛出异常org.omg.CORBA.BAD_PARAM
。用法如下:
BindingType btObject = from_int(_nobject); BindingType btContext = from_int(_ncontext);
btObject
变量引用BindingType
对象,该对象初始化后表示一个与对象引用的绑定。btContext
变量引用BindingType
对象,该对象初始化后表示一个与NamingContex
对象的绑定。value
方法返回_nobject
或_ncontext
,因此在以下代码行中,变量bt
将包含_nobject
或_ncontext
:int bt = BindingType.value();
Holder 类
OMG IDL 使用 OUT 和 INOUT 参数从操作返回值。到 Java 编程语言的映射(不具有 OUT 和 INOUT 参数)为每个类型创建一个特殊类,称为 holder 类。可以将 holder 类的实例作为参数传递给 Java 方法,并可以为该实例的value
字段分配值。这允许它执行 OUT 和 INOUT 参数的功能。
以下是为 org.omg.CosNaming
包生成的 holder 类:
NamingContextHolder
BindingIteratorHolder
BindingHolder
BindingListHolder
BindingTypeHolder
NameComponentHolder
NameHolder
注意,在 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 类都具有至少两个构造方法和一个字段:
value
字段 - 用作 OUT 或 INOUT 参数的类型的实例。例如,NamingContextHolder
的value
字段将是一个NamingContext
对象。- 默认构造方法 - 创建新 holder 对象并使用该类型的默认值初始化的构造方法。例如,用默认构造方法创建的新
BindingHolder
对象的value
字段将被设置为null
,因为此为对象的默认值。其他默认值有用于boolean
的false
、用于数值和 char 类型的0
和用于对象引用的null
。 - 实例中的构造方法 - 创建新 holder 对象并使用提供的实例初始化其
value
字段的构造方法
为用户定义类型(Java 类)创建的 holder 类另外还有三种方法,但是应用程序开发人员不直接使用它们。
Helper 类
Helper 类是为 OMG IDL 接口中所有用户定义类型生成的,提供操作这些类型所需的静态方法。Helper 类中只有一种供应用程序员使用的方法。narrow
方法。只有从 IDL 接口映射的 Java 接口才具有包含 narrow
方法的 helper 类,因此在 CosNaming
包中,只有类 NamingContextHelper
和 BindingIteratorHelper
才具有 narrow
方法。
public static NamingContext narrow(org.omg.CORBA.Object obj)
- 将给定的 CORBA 对象转换为NamingContext
对象public static BindingIterator narrow(org.omg.CORBA.Object obj)
- 将给定的 CORBA 对象转换为BindingIterator
对象
org.omg.CosNaming.NamingContextPackage
包
此包为 org.omg.CosNaming
包中使用的异常以及 NotFoundReason
类(为 NotFound
异常提供原因)提供 Helper 和 Holder 类。
为以下异常提供 Helper 和 Holder 类:
AlreadyBound
CannotProceed
InvalidName
NotEmpty
NotFound
命名服务兼容性
SunCosNaming
包的实现遵守 OMG COSNaming
规范。换句话说,Sun 命名服务中的 API 根据 OMG 提供的命名服务指南实现。因此,如果第三方供应商已实现与 OMG 兼容的命名服务,则可以在 Sun 的 CosNaming
实现和第三方供应商的实现之间切换。然而,不同供应商实现命名服务的方式可能稍有不同(如异常字符串不同),理解这一点很重要。
第三方命名服务用法说明
尽管我们鼓励使用出自同一个供应商的 ORB 和 ORB 服务,但使用 Sun 的 RMI-IIOP ORB 插入第三方的COSNaming
实现也是可能的。以下是要执行的步骤:
- 为 Bootstrap 服务器创建属性文件,并在该文件中给出两个条目。例如,可以将此属性文件称为
/tmp/services
,并将以下内容置于其中:NameService, <Stringified IOR of the Root Naming Context>
。此操作将
NameService
与要使用的CosNaming
实现的根命名上下文 (Root Naming Context) 相关联。 - 使用以下命令启动独立的 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 服务器来获取根命名上下文。
包规范
- Interoperable Naming Service (ptc/00-08-07)
相关文档
有关如何使用CosNaming
API 的概述和示例,请参阅:
有关 Java IDL 概述,请参阅:
- 从以下版本开始:
- JDK1.3
所有类
|
|||||||||