Package org.omg.CosNaming
软件包及其所有类和接口是通过在idlj
上运行工具idlj
生成的,该文件nameservice.idl
OMG IDL编写的模块。
包装规格
有关Java [tm] Platform,Standard Edition 6,ORB符合的官方规范支持部分的精确列表,请参阅Official Specifications for CORBA support in Java[tm] SE 6 。
接口
包org.omg.CosNaming
包含两个公共接口和几个辅助类。
接口是:
-
NamingContext
-
BindingIterator
这两个接口提供绑定/取消绑定名称和对象引用,检索绑定对象引用以及遍历绑定列表的方法。 NamingContext
接口提供命名服务的主要功能, BindingIterator
提供了一种迭代名称/对象引用绑定列表的方法。
辅助课
为了将OMG IDL接口映射到Java编程语言,idlj编译器创建可以被认为是辅助类的Java类。 此处包含接口NamingContext
和BindingIterator
使用的生成辅助类的注释。
NamingContext
和BindingIterator
使用的BindingIterator
以下是命名服务使用的类。
(帮助者和持有者类,为这里列出的每个类生成,将在下面讨论。)
-
public final class NameComponent
- 一个名称的构建块。 (名称绑定到命名上下文中的对象引用。)一个名称是一个或多个
NameComponent
对象的数组。 一个名字用一个NameComponent
称为简单名称 ; 具有多个NameComponent
对象的名称称为复合名称 。一个
NameComponent
对象由两个字段组成:-
id
- 一个String
用作标识符 -
kind
- 可用于任何描述目的的String
。 它的重要性在于它可以用来描述一个对象而不影响语法。 例如,C编程语言使用将扩展名“.c”附加到文件名的句法约定,以指示它是源代码文件。 在NameComponent
对象中,kind
字段可用于描述对象的类型,而不是文件扩展名或其他一些句法约定。 所述的值的实例kind
字段包括琴弦"c_source"
,"object_code"
,"executable"
,"postscript"
,和""
。kind
字段是空字符串并不罕见。
在名字中,除了last之外,每个
NameComponent
对象表示一个NamingContext
对象; 最后一个NameComponent
对象表示绑定的对象引用。 这与路径名称类似,其中最后一个名称是文件名,其前面的所有名称都是目录名称。 -
-
public final class Binding
- 将名称与对象引用或命名上下文相关联的对象。 ABinding
对象有两个字段:-
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();
-
持有人类
OMG IDL使用OUT和INOUT参数从操作返回值。 没有OUT和INOUT参数的Java编程语言的映射为每个类型创建一个称为持有者类的特殊类。 持有者类的实例可以作为参数传递给Java方法,并且可以将值分配给其value
字段。
这允许它执行OUT或INOUT参数的功能。
为包org.omg.CosNaming
生成以下持有org.omg.CosNaming
:
-
NamingContextHolder
-
BindingIteratorHolder
-
BindingHolder
-
BindingListHolder
-
BindingTypeHolder
-
NameComponentHolder
-
NameHolder
需要注意的是,在org.omg.CORBA
包,对于每一个基本的Java类型的holder类: IntHolder
, ShortHolder
, StringHolder
,等等。
还需要注意的是有一个NameHolder
即使没有课Name
类; 同样,还有一个BindingListHolder
即使没有课BindingList
类。 这是真的,因为在OMG IDL界面中, Name
和BindingList
都是typedef
s。 没有从IDL typedef
到Java构造的映射,但是如果typedef
用于序列或阵列,则会生成保持类。 作为映射到Java编程语言, Name
是NameComponent
对象的数组,而BindingList
是Binding
对象的数组。 所有持有者类至少有两个构造函数和一个字段:
-
value
字段 - 用作OUT或INOUT参数的类型实例。 例如,value
一个的字段NamingContextHolder
将是NamingContext
对象。 - 默认构造函数 - 一个构造函数,用于创建使用该类型的默认值初始化的新的持有者对象。 例如,使用默认构造函数创建的新的
BindingHolder
对象的value
字段将设置为null
因为它是对象的默认值。 其他默认设置是false
为boolean
,0
的数字和char类型,并null
对象引用。 - 一个实例的构造函数 - 一个构造函数,它创建一个新的持有者对象,其中的一个实例提供了
value
字段
用户定义类型(Java类)的持有者类具有三种方法,但应用程序开发人员不直接使用它们。
助手班
为OMG IDL接口中的所有用户定义类型生成的助手类提供了处理这些类型所需的静态方法。 应用程序员使用的辅助类中只有一种方法:方法narrow
。 只有从IDL接口映射的Java接口将具有一个帮助类,其中包含一个narrow
方法,所以在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
和org.omg.CosNaming
类中使用的异常提供了助手和持有NotFoundReason
,这为NotFound
提供了异常的NotFound
。
Helper和Holder课程有以下例外:
-
AlreadyBound
-
CannotProceed
-
InvalidName
-
NotEmpty
-
NotFound
命名服务兼容性
Sun的CosNaming
包的实现符合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
实现的根命名上下文相关联。 - 使用以下命令启动独立Bootstrap服务器:
java -classpath $(CLASSPATH) com.sun.corba.ee.internal.CosNaming.BootstrapServer -InitialServicesFile "/tmp/services" [-ORBInitialPort port]
请注意,命令结尾处的方括号表示指定端口号是可选的。
现在当应用程序调用方法org.omg.CORBA.ORB.resolve_initial_references
,CORBA进程将联系引导服务器以获取根命名上下文。
包装规格
- 互操作命名服务( ptc/00-08-07 )
相关文档
有关如何使用CosNaming
API的概述和示例,请参阅:
有关Java IDL的概述,请参阅:
- 从以下版本开始:
- JDK1.3
-
接口摘要 接口 描述 BindingIterator BindingIterator接口允许客户端使用next_one或next_n操作来迭代绑定。BindingIteratorOperations BindingIterator接口允许客户端使用next_one或next_n操作来迭代绑定。NamingContext 命名上下文是一个包含一组名称绑定的对象,其中每个名称都是唯一的。NamingContextExt NamingContextExt
是延长NamingContext
其含有一组名称的绑定,其中每个名字是唯一的并且是可互操作的命名服务的一部分。NamingContextExtOperations NamingContextExt
是延长NamingContext
其含有一组名称的绑定,其中每个名字是唯一的并且是可互操作的命名服务的一部分。NamingContextOperations 命名上下文是一个包含一组名称绑定的对象,其中每个名称都是唯一的。 -
类摘要 Class 描述 _BindingIteratorImplBase _BindingIteratorStub BindingIterator接口允许客户端使用next_one或next_n操作来迭代绑定。_NamingContextExtStub NamingContextExt
是延长NamingContext
其含有一组名称的绑定,其中每个名字是唯一的并且是可互操作的命名服务的一部分。_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
其含有一组名称的绑定,其中每个名字是唯一的并且是可互操作的命名服务的一部分。NamingContextExtHolder NamingContextExt
是延长NamingContext
其含有一组名称的绑定,其中每个名字是唯一的并且是可互操作的命名服务的一部分。NamingContextExtPOA NamingContextExt
是延长NamingContext
其含有一组名称的绑定,其中每个名字是唯一的并且是可互操作的命名服务的一部分。NamingContextHelper 命名上下文是一个包含一组名称绑定的对象,其中每个名称都是唯一的。NamingContextHolder 命名上下文是一个包含一组名称绑定的对象,其中每个名称都是唯一的。NamingContextPOA 命名上下文是一个包含一组名称绑定的对象,其中每个名称都是唯一的。