站内搜索: 请输入搜索关键词
当前页面: 在线文档首页 > JavaTM 2 Platform Standard Edition 5.0 API 规范中文版

ORB (Java 2 Platform SE 5.0) - JavaTM 2 Platform Standard Edition 5.0 API 规范中文版

JavaTM 2 Platform
Standard Ed. 5.0

org.omg.CORBA
类 ORB

java.lang.Object
  继承者 org.omg.CORBA.ORB
直接已知子类:
ORB

public abstract class ORB
extends Object

为 CORBA 对象请求代理 (Object Request Broker) 特性提供 API 的类。ORB 类还提供“可插入 ORB 实现”API,该 API 允许使用另一个供应商的 ORB 实现。

通过连接发送请求的对象(客户端)与响应请求的对象(服务器),ORB 使 CORBA 对象彼此之间能够进行通讯。

ORB 类封装了一些一般的 CORBA 功能,它可执行以下操作:(注意第 5 项和第 6 项,它们包含 ORB 类中的大多数方法,通常与动态调用接口(Dynamic Invocation Interface,DII)和动态框架接口(Dynamic Skeleton Interface,DSI)一起使用。开发人员可以直接使用这些接口,但大多数情况下,这些接口常常由 ORB 内部使用,这对于普通程序员是不可见的。)

  1. 通过为预先定义的属性和环境参数提供值来初始化 ORB 实现
  2. 使用方法 resolve_initial_references 获取对某些服务的初始对象引用(如 NameService)
  3. 将对象引用转换为字符串,将字符串转换为对象引用
  4. 将 ORB 连接到 servant(CORBA 对象实现的实例)以及断开 ORB 与 servant 的连接
  5. 创建如下所示对象
    • TypeCode
    • Any
    • NamedValue
    • Context
    • Environment
    • 包含这些对象的列表(如 NVList
  6. 在 DII 中发送多条消息

可以使用 ORB 类获取对网络上任意位置实现的对象的引用。

应用程序或 applet 通过使用三个 init 方法之一将其自身初始化为 ORB,来访问 CORBA 环境。这三个方法中有两个使用下表中所示的属性(名称与值的关联)。
属性名 属性值
标准 Java CORBA 属性:
org.omg.CORBA.ORBClass ORB 实现的类名称
org.omg.CORBA.ORBSingletonClass init() 返回的 ORB 的类名称

这些属性允许“插入”不同供应商的 ORB 实现。

在创建 ORB 实例时,使用以下标准搜索顺序来定位 ORB 实现的类名称:

  1. 检查 Applet 参数或应用程序字符串数组(如果有)
  2. 检查属性参数(如果有)
  3. 检查系统属性
  4. 检查位于 user.home 目录中的 orb.properties 文件(如果有)
  5. 检查位于 java.home/lib 目录中的 orb.properties 文件(如果有)
  6. 依靠硬编码的默认行为(使用 Java IDL 实现)

注意,Java IDL 提供全功能 ORB 和单件 (Singleton) ORB 的默认实现。当没有为 init 方法提供任何参数时,返回默认单件 ORB。当为 init 方法提供了参数但没有指定 ORB 类时,返回 Java IDL ORB 实现。

以下代码段创建了一个使用默认 ORB 单件初始化的 ORB 对象。此 ORB 有一个受限制的实现,以防止恶意 applet 执行任何创建 typecode 以外的操作。称它为单件 ORB 是因为整个虚拟机中只有一个实例。

    ORB orb = ORB.init();
 

以下代码片段创建用于某个应用程序的 ORB 对象。参数 args 表示提供给应用程序的 main 方法的参数。因为该属性指定了 ORB 类为 "SomeORBImplementation",所以将使用该 ORB 实现初始化新的 ORB。如果 p 为 null,并且参数没有指定 ORB 类,则使用默认 Java IDL 实现初始化新的 ORB。

    Properties p = new Properties();
    p.put("org.omg.CORBA.ORBClass", "SomeORBImplementation");
    ORB orb = ORB.init(args, p);
 

以下代码片段为作为第一个参数提供的 applet 创建 ORB 对象。如果给定 applet 没有指定 ORB 类,则将使用默认 Java IDL 实现初始化新的 ORB。

    ORB orb = ORB.init(myApplet, null);
 

可以在一个或多个 ORB 中初始化应用程序或 applet。ORB 初始化是进入 CORBA 环境的引导调用。

从以下版本开始:
JDK1.2

构造方法摘要
ORB()
           
 
方法摘要
 void connect(Object obj)
          将给定 servant 对象(作为服务器实现类的实例的 Java 对象)连接到 ORB。
 TypeCode create_abstract_interface_tc(String id, String name)
          为 IDL 抽象接口创建一个 TypeCode 对象。
abstract  TypeCode create_alias_tc(String id, String name, TypeCode original_type)
          创建一个表示 IDL aliasTypeCode 对象 (typedef)。
abstract  Any create_any()
          创建一个 IDL Any 对象,初始化后该对象包含一个 kind 字段被设置为 TCKind.tc_nullTypecode 对象。
abstract  TypeCode create_array_tc(int length, TypeCode element_type)
          创建一个表示 IDL arrayTypeCode 对象。
 DynAny create_basic_dyn_any(TypeCode type)
          已过时。 使用新的 DynAnyFactory API 代替
abstract  ContextList create_context_list()
          创建一个空的 ContextList 对象。
 DynAny create_dyn_any(Any value)
          已过时。 使用新的 DynAnyFactory API 代替
 DynArray create_dyn_array(TypeCode type)
          已过时。 使用新的 DynAnyFactory API 代替
 DynEnum create_dyn_enum(TypeCode type)
          已过时。 使用新的 DynAnyFactory API 代替
 DynSequence create_dyn_sequence(TypeCode type)
          已过时。 使用新的 DynAnyFactory API 代替
 DynStruct create_dyn_struct(TypeCode type)
          已过时。 使用新的 DynAnyFactory API 代替
 DynUnion create_dyn_union(TypeCode type)
          已过时。 使用新的 DynAnyFactory API 代替
abstract  TypeCode create_enum_tc(String id, String name, String[] members)
          创建一个表示 IDL enumTypeCode 对象。
abstract  Environment create_environment()
          创建一个 Environment 对象。
abstract  ExceptionList create_exception_list()
          创建一个空的 ExceptionList 对象。
abstract  TypeCode create_exception_tc(String id, String name, StructMember[] members)
          创建一个表示 IDL exceptionTypeCode 对象。
 TypeCode create_fixed_tc(short digits, short scale)
          为 IDL fixed 类型创建一个 TypeCode 对象。
abstract  TypeCode create_interface_tc(String id, String name)
          创建一个表示 IDL interfaceTypeCode 对象。
abstract  NVList create_list(int count)
          为指定数量的 NamedValue 对象分配具有(可能)足够空间的 NVList
abstract  NamedValue create_named_value(String s, Any any, int flags)
          使用给定名称、值和参数模式标志创建一个 NamedValue 对象。
 TypeCode create_native_tc(String id, String name)
          为 IDL native 类型创建一个 TypeCode 对象。
 NVList create_operation_list(Object oper)
          创建一个 NVList,并使用给定 OperationDef 对象中所述操作的参数描述进行初始化。
abstract  OutputStream create_output_stream()
          创建一个新的 org.omg.CORBA.portable.OutputStream,在执行方法调用期间,可在该输出流中对 IDL 方法参数进行编组。
 Policy create_policy(int type, Any val)
          可以调用此方法创建特定类型的新策略对象实例,并且其类型具有指定的初始状态。
abstract  TypeCode create_recursive_sequence_tc(int bound, int offset)
          已过时。 使用 create_recursive_tc 和 create_sequence_tc 的组合替代它
 TypeCode create_recursive_tc(String id)
          创建一个递归 TypeCode 对象,在创建包含递归的 TypeCodes 期间,该对象充当具体 TypeCode 的占位符。
abstract  TypeCode create_sequence_tc(int bound, TypeCode element_type)
          创建一个表示 IDL sequenceTypeCode 对象。
abstract  TypeCode create_string_tc(int bound)
          创建一个表示有界 IDL stringTypeCode 对象。
abstract  TypeCode create_struct_tc(String id, String name, StructMember[] members)
          创建一个表示 IDL structTypeCode 对象。
abstract  TypeCode create_union_tc(String id, String name, TypeCode discriminator_type, UnionMember[] members)
          创建一个表示 IDL unionTypeCode 对象。
 TypeCode create_value_box_tc(String id, String name, TypeCode boxed_type)
          为 IDL value box 类型创建一个 TypeCode 对象。
 TypeCode create_value_tc(String id, String name, short type_modifier, TypeCode concrete_base, ValueMember[] members)
          为 IDL value 类型创建一个 TypeCode 对象。
abstract  TypeCode create_wstring_tc(int bound)
          创建一个表示有界 IDL wstring (wide string) 的 TypeCode 对象。
 void destroy()
          销毁 ORB,以便可以回收其资源。
 void disconnect(Object obj)
          断开给定 servant 对象与 ORB 的连接。
 Current get_current()
          已过时。 使用 resolve_initial_references
abstract  Context get_default_context()
          获取默认 Context 对象。
abstract  Request get_next_response()
          获取已接收到响应的下一个 Request 实例。
abstract  TypeCode get_primitive_tc(TCKind tcKind)
          检索表示给定基本 IDL 类型的 TypeCode 对象。
 boolean get_service_information(short service_type, ServiceInformationHolder service_info)
          用来获取有关受此 ORB 支持的 CORBA 资源和服务的信息。
static ORB init()
          返回对象 ORB 单件。
static ORB init(Applet app, Properties props)
          为 applet 创建一个新的 ORB 实例。
static ORB init(String[] args, Properties props)
          为独立的应用程序创建一个新的 ORB 实例。
abstract  String[] list_initial_services()
          返回最初可用 CORBA 对象引用(比如 "NameService" 和 "InterfaceRepository")的列表。
abstract  String object_to_string(Object obj)
          将给定 CORBA 对象引用转换为字符串。
 void perform_work()
          如果该操作由主线程调用,则执行与实现有关的单元操作。
abstract  boolean poll_next_response()
          找出是否已经响应了延迟的(异步)调用。
abstract  Object resolve_initial_references(String object_name)
          根据可用初始服务名称集解析特定对象引用。
 void run()
          在 ORB 已完成关闭过程前(该过程始于某些线程调用 shutdown 时),此操作将一直阻塞当前线程。
abstract  void send_multiple_requests_deferred(Request[] req)
          异步发送多个动态 (DII) 请求。
abstract  void send_multiple_requests_oneway(Request[] req)
          异步发送多个动态 (DII) 请求,并且不期望任何响应。
protected abstract  void set_parameters(Applet app, Properties props)
          允许使用给定 applet 和参数初始化 ORB 实现。
protected abstract  void set_parameters(String[] args, Properties props)
          允许使用给定的参数和属性初始化 ORB 实现。
 void shutdown(boolean wait_for_completion)
          指示关闭 ORB,这将导致关闭所有对象适配器,以准备销毁。
abstract  Object string_to_object(String str)
          将方法 object_to_string 生成的字符串转换回 CORBA 对象引用。
 boolean work_pending()
          如果 ORB 需要主线程来执行某些操作,则返回 true;如果 ORB 不需要主线程,则返回 false
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

ORB

public ORB()
方法详细信息

init

public static ORB init()
返回对象 ORB 单件。此方法总是返回相同的 ORB 实例,该实例是由 org.omg.CORBA.ORBSingletonClass 系统属性所描述的类的实例。

无参数的 init 方法主要用作 TypeCode 对象的工厂,Helper 类使用该对象来实现 type 方法。还可以使用该方法来创建用于描述 union 标签的 Any 对象(作为创建用于 unionTypeCode 对象的一部分)。

此方法并不适合由 applet 使用,如果在 applet 环境中调用此方法,则该方法返回的 ORB 是受限制的,即它只能用作 TypeCode 对象的工厂。该方法生成的任何 TypeCode 对象都可以在不受信任的 applet 之间安全地共享。

如果某一 ORB 是使用此方法从 applet 创建的,则将抛出系统异常(如果调用的是用来创建 TypeCode 对象的那些方法以外的方法)。

返回:
单件 ORB

init

public static ORB init(String[] args,
                       Properties props)
为独立的应用程序创建一个新的 ORB 实例。此方法只能从应用程序调用,每次调用该方法都会返回一个新的全功能 ORB 对象。

参数:
args - 应用程序的 main 方法的命令行参数,可以为 null
props - 特定于应用程序的属性,可以为 null
返回:
新创建的 ORB 实例

init

public static ORB init(Applet app,
                       Properties props)
为 applet 创建一个新的 ORB 实例。此方法只能从 applet 调用,每次调用该方法都会返回一个新的全功能 ORB 对象。

参数:
app - applet,可以为 null
props - 特定于 applet 的属性,可以为 null
返回:
新创建的 ORB 实例

set_parameters

protected abstract void set_parameters(String[] args,
                                       Properties props)
允许使用给定的参数和属性初始化 ORB 实现。此方法只能在应用程序中使用,由子类 ORB 实现来实现,并由适当的 init 方法调用,以传入其参数。

参数:
args - 应用程序的 main 方法的命令行参数,可以为 null
props - 特定于应用程序的属性,可以为 null

set_parameters

protected abstract void set_parameters(Applet app,
                                       Properties props)
允许使用给定 applet 和参数初始化 ORB 实现。此方法只能在 applet 中使用,由子类 ORB 实现来实现,并由适当的 init 方法调用,以传入其参数。

参数:
app - applet,可以为 null
props - 特定于 applet 的属性,可以为 null

connect

public void connect(Object obj)
将给定 servant 对象(作为服务器实现类的实例的 Java 对象)连接到 ORB。servant 类必须扩展对应于服务器所支持的接口的 ImplBase 类。因此 servant 必须是一个 CORBA 对象引用,并且必须继承自 org.omg.CORBA.Object。由用户创建的 servant 可在调用 connect 方法之后开始接收远程调用。如果将 servant 作为非本地对象上的 IDL 方法调用中的 IDL 参数传递,也就是说,如果对 servant 对象进行编组并将它发送到进程地址空间以外,则 servant 也可以自动隐式地连接到 ORB。

当 servant 对象已经连接到 ORB 时,调用 connect 方法没有任何效果。

OMG 推荐使用可移植对象适配器 API 取代此方法。

参数:
obj - servant 对象引用

destroy

public void destroy()
销毁 ORB,以便可以回收其资源。对已销毁的 ORB 引用调用任何操作都将抛出 OBJECT_NOT_EXIST 异常。一旦已销毁 ORB,使用相同的 ORBid 再次调用 init 将返回对新建 ORB 的引用。

如果对尚未关闭的 ORB 调用 destroy,则在销毁该 ORB 之前将启动关闭进程,并且该方法将一直阻塞到关闭 ORB 为止。
如果应用程序在当前正服务于某个调用的线程中调用 destroy,则将抛出 BAD_INV_ORDER 系统异常,并带有 OMG 次要代码 (minor code) 3,因为阻塞将导致死锁。

为获取最大的可移植性并避免资源泄漏,应用程序应该总是在退出前对所有 ORB 实例调用 shutdowndestroy

抛出:
BAD_INV_ORDER - 如果当前线程正服务于某一调用

disconnect

public void disconnect(Object obj)
断开给定 servant 对象与 ORB 的连接。在此方法返回之后,ORB 将拒绝对已断开 servant 的传入远程请求,并将异常 org.omg.CORBA.OBJECT_NOT_EXIST 发送回远程客户端。因此,从远程客户端看来,该对象似乎已被销毁。不过要注意的是,使用 servant 直接发布的本地请求不通过 ORB,因此,这些请求将继续由 servant 处理。

如果 servant 没有连接到 ORB,则调用 disconnect 方法没有任何效果。

OMG 推荐使用可移植对象适配器 API 取代此方法。

参数:
obj - 将与 ORB 断开连接的 servant 对象

list_initial_services

public abstract String[] list_initial_services()
返回最初可用 CORBA 对象引用(比如 "NameService" 和 "InterfaceRepository")的列表。

返回:
String 对象数组,这些对象表示此 ORB 中最初可用 CORBA 服务的对象引用

resolve_initial_references

public abstract Object resolve_initial_references(String object_name)
                                           throws InvalidName
根据可用初始服务名称集解析特定对象引用。

参数:
object_name - 字符串形式的初始服务名称
返回:
与给定名称关联的对象引用
抛出:
InvalidName - 如果给定名称不与已知服务关联

object_to_string

public abstract String object_to_string(Object obj)
将给定 CORBA 对象引用转换为字符串。注意,此字符串的格式由 IIOP 预先定义,允许将不同 ORB 生成的字符串转换回对象引用。

可以使用能够操作 String 对象的任何方式存储所得 String 对象或与它们进行通信。

参数:
obj - 将字符串化的对象引用
返回:
表示对象引用的字符串

string_to_object

public abstract Object string_to_object(String str)
将方法 object_to_string 生成的字符串转换回 CORBA 对象引用。

参数:
str - 将转换回对象引用的字符串。它必须是使用 object_to_string 方法将对象引用转换所得到的字符串。
返回:
对象引用。

create_list

public abstract NVList create_list(int count)
为指定数量的 NamedValue 对象分配具有(可能)足够空间的 NVList。注意,指定的大小只是一个有助于存储分配的提示,并不表示列表的最大大小。

参数:
count - 要分配空间的 NamedValue 对象的建议数量
返回:
新创建的 NVList
另请参见:
NVList

create_operation_list

public NVList create_operation_list(Object oper)
创建一个 NVList,并使用给定 OperationDef 对象中所述操作的参数描述进行初始化。此 OperationDef 对象是从接口存储库 (Interface Repository) 中获得的。所返回 NVList 对象中参数的顺序与原始 IDL 操作定义中的顺序相同,这使得能够在动态调用请求中使用该列表。

参数:
oper - 将用来创建列表的 OperationDef 对象
返回:
新创建的 NVList 对象,它包含对给定 OperationDef 对象中所述方法的参数描述
另请参见:
NVList

create_named_value

public abstract NamedValue create_named_value(String s,
                                              Any any,
                                              int flags)
使用给定名称、值和参数模式标志创建一个 NamedValue 对象。

NamedValue 对象可用作 (1) 参数或返回值,或者 (2) 上下文属性。它可以单独使用,也可以作为 NVList 对象中的一个元素使用。

参数:
s - NamedValue 对象的名称
any - 将插入 NamedValue 对象的 Any
flags - NamedValue 的参数模式标志:ARG_IN.valueARG_OUT.valueARG_INOUT.value 之一。
返回:
新创建的 NamedValue 对象
另请参见:
NamedValue

create_exception_list

public abstract ExceptionList create_exception_list()
创建一个空的 ExceptionList 对象。

返回:
新创建的 ExceptionList 对象

create_context_list

public abstract ContextList create_context_list()
创建一个空的 ContextList 对象。

返回:
新创建的 ContextList 对象
另请参见:
ContextList, Context

get_default_context

public abstract Context get_default_context()
获取默认 Context 对象。

返回:
默认 Context 对象
另请参见:
Context

create_environment

public abstract Environment create_environment()
创建一个 Environment 对象。

返回:
新创建的 Environment 对象
另请参见:
Environment

create_output_stream

public abstract OutputStream create_output_stream()
创建一个新的 org.omg.CORBA.portable.OutputStream,在执行方法调用期间,可在该输出流中对 IDL 方法参数进行编组。

返回:
新创建的 org.omg.CORBA.portable.OutputStream 对象

send_multiple_requests_oneway

public abstract void send_multiple_requests_oneway(Request[] req)
异步发送多个动态 (DII) 请求,并且不期望任何响应。注意,不保证单向调用可到达服务器。

参数:
req - 请求对象数组

send_multiple_requests_deferred

public abstract void send_multiple_requests_deferred(Request[] req)
异步发送多个动态 (DII) 请求。

参数:
req - Request 对象数组

poll_next_response

public abstract boolean poll_next_response()
找出是否已经响应了延迟的(异步)调用。

返回:
如果获得响应,则返回 true;否则返回 false

get_next_response

public abstract Request get_next_response()
                                   throws WrongTransaction
获取已接收到响应的下一个 Request 实例。

返回:
已获得响应的下一个 Request 对象
抛出:
WrongTransaction - 如果在不同于发送原始请求的事务处理域中调用 get_next_response 方法。有关详细信息,请参阅 OMG 事务服务 (Transaction Service) 规范。

get_primitive_tc

public abstract TypeCode get_primitive_tc(TCKind tcKind)
检索表示给定基本 IDL 类型的 TypeCode 对象。

参数:
tcKind - 对应于所需基本类型的 TCKind 实例
返回:
所请求的 TypeCode 对象

create_struct_tc

public abstract TypeCode create_struct_tc(String id,
                                          String name,
                                          StructMember[] members)
创建一个表示 IDL structTypeCode 对象。使用给定 id、名称和成员初始化该 TypeCode 对象。

参数:
id - struct 的存储库 id
name - struct 的名称
members - 描述 struct 成员的数组
返回:
描述 IDL struct 的新建 TypeCode 对象

create_union_tc

public abstract TypeCode create_union_tc(String id,
                                         String name,
                                         TypeCode discriminator_type,
                                         UnionMember[] members)
创建一个表示 IDL unionTypeCode 对象。使用给定 id、名称、鉴别符类型和成员初始化该 TypeCode 对象。

参数:
id - union 的存储库 id
name - union 的名称
discriminator_type - union 鉴别符的类型
members - 描述 union 成员的数组
返回:
描述 IDL union 的新建 TypeCode 对象

create_enum_tc

public abstract TypeCode create_enum_tc(String id,
                                        String name,
                                        String[] members)
创建一个表示 IDL enumTypeCode 对象。使用给定 id、名称和成员初始化该 TypeCode 对象。

参数:
id - enum 的存储库 id
name - enum 的名称
members - 描述 enum 成员的数组
返回:
描述 IDL enum 的新建 TypeCode 对象

create_alias_tc

public abstract TypeCode create_alias_tc(String id,
                                         String name,
                                         TypeCode original_type)
创建一个表示 IDL aliasTypeCode 对象 (typedef)。使用给定 id、名称和原始类型初始化该 TypeCode 对象。

参数:
id - 别名的存储库 id
name - 别名的名称
original_type - 描述原始类型(该值是其别名)的 TypeCode 对象
返回:
描述 IDL alias 的新建 TypeCode 对象

create_exception_tc

public abstract TypeCode create_exception_tc(String id,
                                             String name,
                                             StructMember[] members)
创建一个表示 IDL exceptionTypeCode 对象。使用给定 id、名称和成员初始化该 TypeCode 对象。

参数:
id - exception 的存储库 id
name - exception 的名称
members - 描述 exception 成员的数组
返回:
描述 IDL exception 的新建 TypeCode 对象

create_interface_tc

public abstract TypeCode create_interface_tc(String id,
                                             String name)
创建一个表示 IDL interfaceTypeCode 对象。使用给定 id 和名称初始化该 TypeCode 对象。

参数:
id - 接口的存储库 id
name - 接口的名称
返回:
描述 IDL interface 的新建 TypeCode 对象

create_string_tc

public abstract TypeCode create_string_tc(int bound)
创建一个表示有界 IDL stringTypeCode 对象。使用给定 bound 初始化该 TypeCode 对象,bound 表示字符串的最大长度。0 指示此类型代码描述的字符串是无界的。

参数:
bound - string 的范围,不能为负
返回:
描述有界 IDL string 的新建 TypeCode 对象
抛出:
BAD_PARAM - 如果 bound 为负值

create_wstring_tc

public abstract TypeCode create_wstring_tc(int bound)
创建一个表示有界 IDL wstring (wide string) 的 TypeCode 对象。使用给定 bound 初始化该 TypeCode 对象,bound 表示宽字符串的最大长度。0 指示此类型代码描述的字符串是无界的。

参数:
bound - wstring 的范围,不能为负
返回:
描述有界 IDL wstring 的新建 TypeCode 对象
抛出:
BAD_PARAM - 如果 bound 为负值

create_sequence_tc

public abstract TypeCode create_sequence_tc(int bound,
                                            TypeCode element_type)
创建一个表示 IDL sequenceTypeCode 对象。使用给定 bound 和元素类型初始化该 TypeCode 对象。

参数:
bound - sequence 的范围,如果无界,则该值为 0
element_type - 描述 sequence 中所包含元素的 TypeCode 对象
返回:
描述 IDL sequence 的新建 TypeCode 对象

create_recursive_sequence_tc

@Deprecated
public abstract TypeCode create_recursive_sequence_tc(int bound,
                                                                 int offset)
已过时。 使用 create_recursive_tc 和 create_sequence_tc 的组合替代它

创建一个表示递归 IDL sequenceTypeCode 对象。

对于以下代码片段中的 IDL struct Node,用来创建其序列的 offset 参数将是 1:

    Struct Node {
        long value;
        Sequence <Node> subnodes;
    };
 

参数:
bound - 序列范围,如果无界,则该值为 0
offset - 描述此序列元素的封闭 TypeCode 对象的索引
返回:
描述递归序列的 TypeCode 对象
另请参见:
create_recursive_tc, create_sequence_tc

create_array_tc

public abstract TypeCode create_array_tc(int length,
                                         TypeCode element_type)
创建一个表示 IDL arrayTypeCode 对象。使用给定长度和元素类型初始化该 TypeCode 对象。

参数:
length - array 的长度
element_type - 描述 array 中所包含元素的类型的 TypeCode 对象
返回:
描述 IDL array 的新建 TypeCode 对象

create_native_tc

public TypeCode create_native_tc(String id,
                                 String name)
为 IDL native 类型创建一个 TypeCode 对象。

参数:
id - native 类型的逻辑 id。
name - native 类型的名称。
返回:
所请求的 TypeCode。

create_abstract_interface_tc

public TypeCode create_abstract_interface_tc(String id,
                                             String name)
为 IDL 抽象接口创建一个 TypeCode 对象。

参数:
id - 抽象接口类型的逻辑 id。
name - 抽象接口类型的名称。
返回:
所请求的 TypeCode。

create_fixed_tc

public TypeCode create_fixed_tc(short digits,
                                short scale)
为 IDL fixed 类型创建一个 TypeCode 对象。

参数:
digits - 指定数字中总的小数位数,必须在从 1 到 31 的闭区间内。
scale - 指定小数点的位置。
返回:
所请求的 TypeCode。

create_value_tc

public TypeCode create_value_tc(String id,
                                String name,
                                short type_modifier,
                                TypeCode concrete_base,
                                ValueMember[] members)
为 IDL value 类型创建一个 TypeCode 对象。concrete_base 参数是用于 valuetype(将为其创建 TypeCode)直接具体 valuetype 基的 TypeCode。如果 valuetype 没有 concrete 基,则该值为 null。

参数:
id - 值类型的逻辑 id。
name - 值类型的名称。
type_modifier - 以下值类型修饰符常量之一:VM_NONE、VM_CUSTOM、VM_ABSTRACT 或 VM_TRUNCATABLE
concrete_base - 描述具体 valuetype 基的 TypeCode 对象
members - 包含 value 类型成员的数组
返回:
所请求的 TypeCode

create_recursive_tc

public TypeCode create_recursive_tc(String id)
创建一个递归 TypeCode 对象,在创建包含递归的 TypeCodes 期间,该对象充当具体 TypeCode 的占位符。id 参数指定类型(递归 TypeCode 将充当该类型的占位符)的存储库 id。一旦将递归 TypeCode 正确地嵌入到对应于指定存储库 id 的封闭 TypeCode,该 TypeCode 的作用将与普通 TypeCode 一样。如果在将递归 TypeCode 嵌入封闭 TypeCode 之前对该 TypeCode 执行调用操作,则将导致 BAD_TYPECODE 异常。

例如,以下 IDL 类型声明中包含递归:

    Struct Node {
        Sequence<Node> subnodes;
    };
 

要为 struct Node 创建 TypeCode,应调用 TypeCode 创建操作,如下所示:

 String nodeID = "IDL:Node:1.0";
 TypeCode recursiveSeqTC = orb.create_sequence_tc(0, orb.create_recursive_tc(nodeID));
 StructMember[] members = { new StructMember("subnodes", recursiveSeqTC, null) };
 TypeCode structNodeTC = orb.create_struct_tc(nodeID, "Node", members);
 

还要注意的是,以下是一个非法 IDL 类型声明:

    Struct Node {
        Node next;
    };
 

递归类型只能出现在可以为空的序列中。当在 Any 数组中传输 struct 数据时,可以通过这种方式避免编码问题。

参数:
id - 所引用类型的逻辑 id
返回:
所请求的 TypeCode

create_value_box_tc

public TypeCode create_value_box_tc(String id,
                                    String name,
                                    TypeCode boxed_type)
为 IDL value box 类型创建一个 TypeCode 对象。

参数:
id - 值类型的逻辑 id
name - 值类型的名称
boxed_type - 该类型的 TypeCode
返回:
所请求的 TypeCode

create_any

public abstract Any create_any()
创建一个 IDL Any 对象,初始化后该对象包含一个 kind 字段被设置为 TCKind.tc_nullTypecode 对象。

返回:
新创建的 Any 对象

get_current

@Deprecated
public Current get_current()
已过时。 使用 resolve_initial_references

检索 Current 对象。Current 接口用于管理由服务使用的特定于线程的信息(比如事务处理和安全)。

返回:
新创建的 Current 对象
另请参见:
CORBA 包中有关未实现特性的注释

run

public void run()
在 ORB 已完成关闭过程前(该过程始于某些线程调用 shutdown 时),此操作将一直阻塞当前线程。此方法可由关闭 ORB 时获取全部通知的多个线程使用。


shutdown

public void shutdown(boolean wait_for_completion)
指示关闭 ORB,这将导致关闭所有对象适配器,以准备销毁。
如果 wait_for_completion 参数为 true,则在所有 ORB 处理(包括当前执行请求、对象释放和其他对象适配器操作的处理)已完成之前,此操作一直受阻塞。如果应用程序在当前正服务于某个调用的线程中执行该操作,则将抛出 BAD_INV_ORDER 系统异常,并带有 OMG 次要代码 3,因为阻塞将导致死锁。
如果 wait_for_completion 参数为 FALSE,则可能在返回时还没完成关闭。

当 ORB 处于关闭过程中时,ORB 操作照常,继续为传入和传出的请求服务,直到所有请求完成为止。一旦 ORB 已关闭,则只能对该 ORB(或从中获得的任何对象引用)调用对象引用管理操作。应用程序还可以对 ORB 本身调用 destroy 操作。调用任何其他操作将导致抛出 BAD_INV_ORDER 系统异常,并带有 OMG 次要代码 4。

ORB.run 方法将在调用 shutdown 之后返回。

参数:
wait_for_completion - 如果调用在完成关闭之前应一直受阻塞,则该参数为 true;如果该调用应立即返回,则该参数为 false
抛出:
BAD_INV_ORDER - 如果当前线程正服务于某一调用。

work_pending

public boolean work_pending()
如果 ORB 需要主线程来执行某些操作,则返回 true;如果 ORB 不需要主线程,则返回 false

返回:
如果有些操作正处于挂起状态,则返回 true,这意味着 ORB 需要主线程来执行某些操作;如果没有操作处于挂起状态,从而 ORB 不需要主线程,则返回 false

perform_work

public void perform_work()
如果该操作由主线程调用,则执行与实现有关的单元操作。否则不执行任何操作。可以组合使用 work_pendingperform_work 方法来实现简单的轮询循环,该循环在 ORB 和其他活动中多路传输主线程。


get_service_information

public boolean get_service_information(short service_type,
                                       ServiceInformationHolder service_info)
用来获取有关受此 ORB 支持的 CORBA 资源和服务的信息。将为其请求信息的服务类型以 in 参数 service_type 的形式传入,该参数值由 CORBA 模块中的常量定义。如果服务信息可用于该类型,则在 out 参数 service_info 中返回它,并且该操作将返回 true 值。如果对于所请求服务类型没有信息可用,则该操作返回 false(即此 ORB 不支持该服务)。

参数:
service_type - 一个 short 值,指示将为其请求信息的服务类型
service_info - 一个 ServiceInformationHolder 对象,该对象将保存此方法生成的 ServiceInformation 对象
返回:
如果服务信息可用于 service_type,则返回 true;如果对于所请求的服务类型没有可用信息,则返回 false
另请参见:
CORBA 包中有关未实现特性的注释

create_dyn_any

@Deprecated
public DynAny create_dyn_any(Any value)
已过时。 使用新的 DynAnyFactory API 代替

根据给定 Any 对象创建一个新的 DynAny 对象。

参数:
value - 据以创建新 DynAny 对象的 Any 对象
返回:
根据给定 Any 对象创建的新 DynAny 对象
另请参见:
CORBA 包中有关未实现特性的注释

create_basic_dyn_any

@Deprecated
public DynAny create_basic_dyn_any(TypeCode type)
                            throws InconsistentTypeCode
已过时。 使用新的 DynAnyFactory API 代替

根据给定 TypeCode 对象创建基本 DynAny 对象。

参数:
type - 据以创建新 DynAny 对象的 TypeCode 对象
返回:
根据给定 TypeCode 对象创建新的 DynAny 对象
抛出:
InconsistentTypeCode - 如果给定 TypeCode 对象与操作不一致。
另请参见:
CORBA 包中有关未实现特性的注释

create_dyn_struct

@Deprecated
public DynStruct create_dyn_struct(TypeCode type)
                            throws InconsistentTypeCode
已过时。 使用新的 DynAnyFactory API 代替

根据给定 TypeCode 对象创建新的 DynStruct 对象。

参数:
type - 据以创建新的 DynStruct 对象的 TypeCode 对象
返回:
根据给定 TypeCode 对象创建新的 DynStruct 对象
抛出:
InconsistentTypeCode - 如果给定 TypeCode 对象与操作不一致。
另请参见:
CORBA 包中有关未实现特性的注释

create_dyn_sequence

@Deprecated
public DynSequence create_dyn_sequence(TypeCode type)
                                throws InconsistentTypeCode
已过时。 使用新的 DynAnyFactory API 代替

根据给定 TypeCode 对象创建新的 DynSequence 对象。

参数:
type - 据以创建新 DynSequence 对象的 TypeCode 对象
返回:
根据给定 TypeCode 对象创建新的 DynSequence 对象
抛出:
InconsistentTypeCode - 如果给定 TypeCode 对象与操作不一致。
另请参见:
CORBA 包中有关未实现特性的注释

create_dyn_array

@Deprecated
public DynArray create_dyn_array(TypeCode type)
                          throws InconsistentTypeCode
已过时。 使用新的 DynAnyFactory API 代替

根据给定 TypeCode 对象创建新的 DynArray 对象。

参数:
type - 据以创建新 DynArray 对象的 TypeCode 对象
返回:
根据给定 TypeCode 对象创建新的 DynArray 对象
抛出:
InconsistentTypeCode - 如果给定 TypeCode 对象与操作不一致。
另请参见:
CORBA 包中有关未实现特性的注释

create_dyn_union

@Deprecated
public DynUnion create_dyn_union(TypeCode type)
                          throws InconsistentTypeCode
已过时。 使用新的 DynAnyFactory API 代替

根据给定 TypeCode 对象创建新的 DynUnion 对象。

参数:
type - 据以创建新 DynUnion 对象的 TypeCode 对象
返回:
根据给定 TypeCode 对象创建新的 DynUnion 对象
抛出:
InconsistentTypeCode - 如果给定 TypeCode 对象与操作不一致。
另请参见:
CORBA 包中有关未实现特性的注释

create_dyn_enum

@Deprecated
public DynEnum create_dyn_enum(TypeCode type)
                        throws InconsistentTypeCode
已过时。 使用新的 DynAnyFactory API 代替

根据给定 TypeCode 对象创建新的 DynEnum 对象。

参数:
type - 据以创建新 DynEnum 对象的 TypeCode 对象
返回:
根据给定 TypeCode 对象创建新的 DynEnum 对象
抛出:
InconsistentTypeCode - 如果给定 TypeCode 对象与操作不一致。
另请参见:
CORBA 包中有关未实现特性的注释

create_policy

public Policy create_policy(int type,
                            Any val)
                     throws PolicyError
可以调用此方法创建特定类型的新策略对象实例,并且其类型具有指定的初始状态。如果 create_policy 因为不能解释所请求的类型和策略内容而无法实例化新的 Policy 对象,则它将引发带有恰当原因的 PolicyError 异常。

参数:
type - 要创建的策略对象的 PolicyType
val - 将用来设置被创建的 Policy 对象初始状态的值
返回:
对新建 Policy 对象的引用,该对象的类型由 type 参数指定,并被初始化为 val 参数指定的状态
抛出:
org.omg.CORBA.PolicyError - 当所请求的策略不受支持,或所请求的策略初始状态不受支持时。
PolicyError

JavaTM 2 Platform
Standard Ed. 5.0

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

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