- java.lang.Object
-
- org.omg.CORBA.ORB
-
- 已知直接子类:
-
ORB
public abstract class ORB extends Object
一个为CORBA对象请求代理功能提供API的类。ORB类还提供了“可插拔ORB实现”API,允许使用另一个供应商的ORB实现。ORB使CORBA对象能够通过连接请求(客户端)与对象处理请求(服务器)的对象进行通信。
封装通用CORBA功能的
ORB类执行以下操作:(请注意,包含ORB类中大多数方法的项目5和6通常与Dynamic Invocation Interface(DII)和Dynamic Skeleton Interface(DSI)一起使用。接口可能直接由开发人员使用,但最常见的是它们由ORB在内部使用,一般程序员不会看到。)- 通过提供预定义属性和环境参数的值来初始化ORB实现
- 使用方法
resolve_initial_references获取诸如NameService的服务的初始对象引用 - 将对象引用转换为字符串并返回
- 将ORB连接到servant(CORBA对象实现的实例),并断开ORB与仆人的连接
- 创建对象,如
-
TypeCode -
Any -
NamedValue -
Context -
Environment - 列表(如
NVList)包含这些对象
-
- 在DII中发送多条消息
ORB类可用于获取对网络上任何地方实现的对象的引用。通过使用三种
Standard Java CORBA Properties: Property Name Property Value org.omg.CORBA.ORBClass class name of an ORB implementation org.omg.CORBA.ORBSingletonClass class name of the ORB returned byinit方法之一将应用程序或小程序初始化为ORB可以访问CORBA环境。 这三种方法中的两种使用下表所示的属性(名称与值的关联)。init()这些属性允许不同供应商的
ORB实现被“插入”。当创建ORB实例时,使用以下标准搜索顺序找到ORB实现的类名:
- 检查Applet参数或应用程序字符串数组(如果有)
- 检查属性参数(如果有)
- 检查系统属性(如果有)
- 检查位于user.home目录中的orb.properties文件(如果有)
- 检查运行时映像中的orb.properties文件(如果有)
- 回到硬编码的默认行为(使用Java IDL实现)
请注意,Java IDL为全功能ORB和Singleton ORB提供了默认实现。 当方法
init没有给出参数时,返回默认的Singleton ORB。 当方法init被给定参数但没有指定ORB类时,返回Java IDL ORB实现。以下代码段创建一个使用默认ORB Singleton初始化的
ORB对象。 这个ORB有一个有限的实现,以防止恶意小程序做任何事情超出创建类型代码。 它被称为单例,因为整个虚拟机只有一个实例。ORB orb = ORB.init();以下代码片段为应用程序创建一个
ORB对象。 参数args表示提供给应用程序的main方法的参数。 由于该属性将ORB类指定为“SomeORBImplementation”,所以新ORB将被该ORB实现初始化。 如果p已经为空,并且参数没有指定ORB类,则新的ORB将被初始化为默认的Java IDL实现。Properties p = new Properties(); p.put("org.omg.CORBA.ORBClass", "SomeORBImplementation"); ORB orb = ORB.init(args, p);以下代码片段为作为第一个参数提供的小程序创建一个
ORB对象。 如果给定的小程序没有指定ORB类,新的ORB将使用默认的Java IDL实现进行初始化。ORB orb = ORB.init(myApplet, null);应用程序或小程序可以在一个或多个ORB中进行初始化。 ORB初始化是对CORBA世界的引导调用。
- Implementation Note:
-
当通过系统属性或orb.properties配置单例ORB时,它将被定位,并通过系统类加载器加载。
因此,在适当的情况下,这个替代ORBSingleton的类在应用程序的类路径上可用。
应该注意的是,单体ORB是系统的。
当通过2-arg init方法创建每个应用程序的ORB时,它将使用线程上下文类加载器来定位。
IDL到Java语言OMG规范将$ {java.home} / lib目录作为位置,在Java运行时映像中记录,以搜索orb.properties。 此位置不适用于用户可编辑的配置文件。 因此,实现首先检查orb.properties的$ {java.home} / conf目录,然后检查$ {java.home} / lib目录。
- 从以下版本开始:
- JDK1.2
-
-
构造方法摘要
构造方法 Constructor 描述 ORB()
-
方法摘要
所有方法 静态方法 接口方法 抽象方法 具体的方法 弃用的方法 Modifier and Type 方法 描述 voidconnect(Object obj)将给定的服务对象(作为服务器实现类的实例的Java对象)连接到ORB。TypeCodecreate_abstract_interface_tc(String id, String name)为IDL抽象接口创建一个TypeCode对象。abstract TypeCodecreate_alias_tc(String id, String name, TypeCode original_type)创建一个表示IDLalias(typedef)的TypeCode对象。abstract Anycreate_any()创建一个IDLAny对象,初始化为包含其kind字段设置为TCKind.tc_null的Typecode对象。abstract TypeCodecreate_array_tc(int length, TypeCode element_type)创建TypeCode表示IDL对象array。DynAnycreate_basic_dyn_any(TypeCode type)已过时。使用新的DynAnyFactory APIabstract ContextListcreate_context_list()创建一个空的ContextList对象。DynAnycreate_dyn_any(Any value)已过时。使用新的DynAnyFactory APIDynArraycreate_dyn_array(TypeCode type)已过时。使用新的DynAnyFactory APIDynEnumcreate_dyn_enum(TypeCode type)已过时。使用新的DynAnyFactory APIDynSequencecreate_dyn_sequence(TypeCode type)已过时。使用新的DynAnyFactory APIDynStructcreate_dyn_struct(TypeCode type)已过时。使用新的DynAnyFactory APIDynUnioncreate_dyn_union(TypeCode type)已过时。使用新的DynAnyFactory APIabstract TypeCodecreate_enum_tc(String id, String name, String[] members)创建一个表示IDL枚举的TypeCode对象。abstract Environmentcreate_environment()创建一个Environment对象。abstract ExceptionListcreate_exception_list()创建一个空的ExceptionList对象。abstract TypeCodecreate_exception_tc(String id, String name, StructMember[] members)创建一个表示IDLexception的TypeCode对象。TypeCodecreate_fixed_tc(short digits, short scale)为IDL固定类型创建一个TypeCode对象。abstract TypeCodecreate_interface_tc(String id, String name)创建一个表示IDLinterface的TypeCode对象。abstract NVListcreate_list(int count)分配一个NVList(可能)足够的空间用于指定数量的NamedValue对象。abstract NamedValuecreate_named_value(String s, Any any, int flags)使用给定的名称,值和参数模式标志创建一个NamedValue对象。TypeCodecreate_native_tc(String id, String name)为IDL本机类型创建一个TypeCode对象。NVListcreate_operation_list(Object oper)创建一个NVList,它使用给定的OperationDef对象中描述的操作的参数描述进行初始化。abstract OutputStreamcreate_output_stream()创建一个新的org.omg.CORBA.portable.OutputStream,在方法调用期间可以编入IDL方法参数。Policycreate_policy(int type, Any val)可以调用以创建具有指定初始状态的特定类型的策略对象的新实例。abstract TypeCodecreate_recursive_sequence_tc(int bound, int offset)已过时。使用create_recursive_tc和create_sequence_tc的组合TypeCodecreate_recursive_tc(String id)在创建包含递归的TypeCode的过程中,创建一个递归的TypeCode对象,该对象用作具体的TypeCode的占位符。abstract TypeCodecreate_sequence_tc(int bound, TypeCode element_type)创建代表IDLsequence的TypeCode对象。abstract TypeCodecreate_string_tc(int bound)创建一个TypeCode对象,代表有界的IDLstring。abstract TypeCodecreate_struct_tc(String id, String name, StructMember[] members)创建一个表示IDLstruct的TypeCode对象。abstract TypeCodecreate_union_tc(String id, String name, TypeCode discriminator_type, UnionMember[] members)创建一个表示IDLunion的TypeCode对象。TypeCodecreate_value_box_tc(String id, String name, TypeCode boxed_type)为IDL值框创建一个TypeCode对象。TypeCodecreate_value_tc(String id, String name, short type_modifier, TypeCode concrete_base, ValueMember[] members)为IDL值类型创建一个TypeCode对象。abstract TypeCodecreate_wstring_tc(int bound)代表一个有界的IDLwstring(宽字符串)的TypeCode对象。voiddestroy()破坏ORB,以便资源可以回收。voiddisconnect(Object obj)断开给定的servant对象与ORB的连接。Currentget_current()已过时。使用resolve_initial_references。abstract Contextget_default_context()获取默认的Context对象。abstract Requestget_next_response()获取接收到响应的下一个Request实例。abstract TypeCodeget_primitive_tc(TCKind tcKind)检索表示给定的原始IDL类型的TypeCode对象。booleanget_service_information(short service_type, ServiceInformationHolder service_info)用于获取有关该ORB支持的CORBA设施和服务的信息。static ORBinit()返回ORB单例对象。static ORBinit(Applet app, Properties props)为一个小程序创建一个新的ORB实例。static ORBinit(String[] args, Properties props)为独立应用程序创建一个新的ORB实例。abstract String[]list_initial_services()返回最初可用的CORBA对象引用的列表,例如“NameService”和“InterfaceRepository”。abstract Stringobject_to_string(Object obj)将给定的CORBA对象引用转换为字符串。voidperform_work()如果主线程调用,则执行依赖于实现的工作单元。abstract booleanpoll_next_response()找出任何延迟(异步)调用是否有响应。abstract Objectresolve_initial_references(String object_name)从可用的初始服务名称集中解析特定的对象引用。voidrun()此操作阻止当前线程,直到ORB完成关闭进程,当某个线程调用shutdown时启动。abstract voidsend_multiple_requests_deferred(Request[] req)以异步方式发送多个动态(DII)请求。abstract voidsend_multiple_requests_oneway(Request[] req)以异步方式发送多个动态(DII)请求,而不需要任何响应。protected abstract voidset_parameters(Applet app, Properties props)允许使用给定的小程序和参数初始化ORB实现。protected abstract voidset_parameters(String[] args, Properties props)允许使用给定的参数和属性初始化ORB实现。voidshutdown(boolean wait_for_completion)指示ORB关闭,这导致所有对象适配器关闭,以备破坏。
如果wait_for_completion参数为真,则此操作将阻塞,直到完成所有ORB处理(包括处理当前正在执行的请求,对象停用和其他对象适配器操作)为止。abstract Objectstring_to_object(String str)将由方法object_to_string生成的字符串转换回CORBA对象引用。booleanwork_pending()返回true如果ORB需要主线程来执行某些工作,并false如果ORB不需要主线程。
-
-
-
方法详细信息
-
init
public static ORB init()
返回ORB单例对象。 此方法总是返回相同的ORB实例,它是由org.omg.CORBA.ORBSingletonClass系统属性描述的类的实例。方法
init无参数版本主要用作TypeCode对象的工厂,由Helper类用于实现方法type。 它也用于创建Any对象,用于描述union标签(作为为TypeCode创建TypeCode对象的union)。该方法不是由applet使用的,如果在applet环境中调用该方法,则返回的ORB将被限制,因此它只能用作
TypeCode对象的工厂。 它生成的任何TypeCode对象可以在不可信的小程序之间安全地共享。如果使用此方法从小程序创建ORB,则如果调用了创建
TypeCode对象的方法以外的方法,则将抛出系统异常。- Implementation Note:
- 通过系统属性或orb.properties配置时,系统级单例ORB通过系统类加载器定位。
- 结果
- 单身ORB
-
init
public static ORB init(String[] args, Properties props)
为独立应用程序创建一个新的ORB实例。 此方法可能仅从应用程序调用,并在每次调用时返回一个新的功能全面的ORB对象。- Implementation Note:
- 通过系统属性或orb.properties配置时,ORB通过线程上下文类加载器定位。
- 参数
-
args- 应用程序的main方法的命令行参数; 可以是null -
props- 应用程序特定的属性; 可能是null - 结果
- 新创建的ORB实例
-
init
public static ORB init(Applet app, Properties props)
为一个小程序创建一个新的ORB实例。 此方法可能仅从applet调用,并在每次调用时返回一个新的全功能ORB对象。- Implementation Note:
- 通过系统属性或orb.properties配置时,ORB通过线程上下文类加载器定位。
- 参数
-
app- 小程序 可能是null -
props- 小程序特定属性; 可以是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)
允许使用给定的小程序和参数初始化ORB实现。 该方法仅在applet中使用,由ORB实现子类实现,并通过适当的init方法调用,以传入其参数。- 参数
-
app- 小程序 可能是null -
props- 小程序特定属性; 可以是null
-
connect
public void connect(Object obj)
将给定的服务对象(作为服务器实现类的实例的Java对象)连接到ORB。 servant类必须扩展与服务器支持的接口对应的ImplBase类。 因此,仆人必须是CORBA对象引用,并继承自org.omg.CORBA.Object。 用户创建的服务器可以在方法connect被调用后开始接收远程调用。 如果在非本地对象的IDL方法调用中作为IDL参数传递,则serator也可以自动和隐式地连接到ORB,即如果servant对象必须编组并发送到进程地址之外空间。当servant对象已经连接到ORB时,调用方法
connect不起作用。OMG不赞成使用便携式对象适配器API。
- 参数
-
obj- 仆对象引用
-
destroy
public void destroy()
破坏ORB,以便资源可以回收。 对被破坏的ORB引用调用的任何操作将抛出OBJECT_NOT_EXIST异常。 一旦ORB已被破坏,其他呼叫init具有相同ORBid将参考返回到新建ORB。如果在尚未关闭的ORB上调用
destroy,则它将启动关闭进程并阻止,直到ORB在销毁ORB之前已关闭。
如果一个应用程序调用destroy在当前服务调用线程,该BAD_INV_ORDER系统异常将与OMG次要代码3被抛出,因为阻塞将导致死锁。为了最大的可移植性和避免资源泄漏,应用程序应始终在退出之前调用所有ORB实例上的
shutdown和destroy。- 异常
-
BAD_INV_ORDER- 如果当前线程服务于调用
-
disconnect
public void disconnect(Object obj)
断开给定的servant对象与ORB的连接。 此方法返回后,ORB将拒绝断开连接的服务器的传入远程请求,并将异常org.omg.CORBA.OBJECT_NOT_EXIST发送回远程客户端。 因此,对象似乎从远程客户端的角度被破坏。 但请注意,使用仆人发出的本地请求直接不通过ORB; 因此,他们将继续由仆人处理。如果服务器未连接到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- 对stringify的对象引用 - 结果
- 该字符串表示对象引用
-
string_to_object
public abstract Object string_to_object(String str)
将由方法object_to_string生成的字符串转换回CORBA对象引用。- 参数
-
str- 要转换回对象引用的字符串。 它必须是使用方法object_to_string将对象引用转换为字符串的object_to_string。 - 结果
- 对象引用
-
create_list
public abstract NVList create_list(int count)
分配一个NVList(可能)足够的空间用于指定数量的NamedValue对象。 请注意,指定的大小只是帮助存储分配的提示,并不意味着列表的最大大小。- 参数
-
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对象。A
NamedValue对象用作(1)参数或返回值或(2)上下文属性。 它可以自己使用或作为NVList对象中的元素使用。- 参数
-
s-NamedValue对象的名称 -
any- 要插入NamedValue对象的Any值 -
flags-为对所述参数模式标志NamedValue:之一ARG_IN.value,ARG_OUT.value,或ARG_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事务服务规范。
-
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)
创建一个TypeCode对象,代表一个IDLstruct。TypeCode对象使用给定的id,name和成员进行初始化。- 参数
-
id-为库IDstruct -
name- 的名字struct -
members- 一个描述struct成员的struct - 结果
-
描述IDL的新创建的
TypeCode对象struct
-
create_union_tc
public abstract TypeCode create_union_tc(String id, String name, TypeCode discriminator_type, UnionMember[] members)
创建一个表示IDLunion的TypeCode对象。TypeCode对象使用给定的id,name,discriminator类型和成员进行初始化。- 参数
-
id- 该库的ID为union -
name- 的名字union -
discriminator_type-union鉴别器的类型 -
members- 一个描述union的成员的union - 结果
-
新创建的
TypeCode对象描述一个IDLunion
-
create_enum_tc
public abstract TypeCode create_enum_tc(String id, String name, String[] members)
创建TypeCode表示IDL对象枚举。TypeCode对象使用给定的id,name和成员进行初始化。- 参数
-
id-为库ID枚举 -
name- 的名称为枚举 -
members- 描述枚举的成员的枚举 - 结果
-
描述IDL
枚举的新创TypeCode对象
-
create_alias_tc
public abstract TypeCode create_alias_tc(String id, String name, TypeCode original_type)
创建一个表示IDLalias(typedef)的TypeCode对象。TypeCode对象使用给定的id,name和original类型进行初始化。- 参数
-
id- 别名的存储库标识 -
name- 别名的名称 -
original_type- 描述这是别名的原始类型的TypeCode对象 - 结果
-
描述IDL
alias的新创建的TypeCode对象
-
create_exception_tc
public abstract TypeCode create_exception_tc(String id, String name, StructMember[] members)
创建一个表示IDLexception的TypeCode对象。TypeCode对象使用给定的id,name和成员进行初始化。- 参数
-
id-为库IDexception -
name- 的名字为exception -
members- 一个描述exception成员的exception - 结果
-
新创建的
TypeCode对象描述一个IDLexception
-
create_interface_tc
public abstract TypeCode create_interface_tc(String id, String name)
创建TypeCode表示IDL对象interface。TypeCode对象使用给定的id和名称进行初始化。- 参数
-
id- 接口的存储库标识 -
name- 接口的名称 - 结果
-
新创建的
TypeCode对象描述一个IDLinterface
-
create_string_tc
public abstract TypeCode create_string_tc(int bound)
代表一个有界的IDLstring一个TypeCode对象。TypeCode对象被初始化为给定的绑定,它表示字符串的最大长度。 零表示由此类型代码描述的字符串是无界的。- 参数
-
bound- 约束为string; 不能是负面的 - 结果
-
描述有界IDL
string的新创建的TypeCode对象 - 异常
-
BAD_PARAM- 如果绑定是负值
-
create_wstring_tc
public abstract TypeCode create_wstring_tc(int bound)
表示一个TypeCode对象,表示一个有界的IDLwstring(宽字符串)。TypeCode对象使用给定的边界进行初始化,表示宽字符串的最大长度。 零表示由此类型代码描述的字符串是无界的。- 参数
-
bound- 约束为wstring; 不能是负面的 - 结果
-
新创建的
TypeCode对象描述一个有界IDLwstring - 异常
-
BAD_PARAM- 如果绑定是负值
-
create_sequence_tc
public abstract TypeCode create_sequence_tc(int bound, TypeCode element_type)
创建TypeCode表示IDL对象sequence。TypeCode对象使用给定的绑定和元素类型进行初始化。- 参数
-
bound-sequence为sequence,如果无限制为0 -
element_type-所述TypeCode对象描述元素包含在sequence - 结果
-
新创建的
TypeCode对象描述一个IDLsequence
-
create_recursive_sequence_tc
@Deprecated public abstract TypeCode create_recursive_sequence_tc(int bound, int offset)
已过时。 使用create_recursive_tc和create_sequence_tc的组合创建一个TypeCode对象,代表一个递归的IDLsequence。对于以下代码片段中的IDL
struct节点,创建其序列的偏移量参数为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)
创建TypeCode表示IDL对象array。TypeCode对象使用给定的长度和元素类型进行初始化。- 参数
-
length- 长度为array -
element_type- 一个TypeCode对象,描述包含在array的元素的类型 - 结果
-
描述IDL
array的新创建的TypeCode对象
-
create_native_tc
public TypeCode create_native_tc(String id, String name)
为IDL本机类型创建一个TypeCode对象。- 参数
-
id- 本机类型的逻辑ID。 -
name- 本机类型的名称。 - 结果
- 请求的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固定类型创建一个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值类型创建一个TypeCode对象。 concrete_base参数是TypeCode,用于创建TypeCode的类型的即时具体值类型。 如果贵重物品没有具体基础,则可以为null。- 参数
-
id- 值类型的逻辑ID。 -
name- 值类型的名称。 -
type_modifier- 值类型修饰符常量之一:VM_NONE,VM_CUSTOM,VM_ABSTRACT或VM_TRUNCATABLE -
concrete_base- 描述具体价值类型基础的TypeCode对象 -
members- 包含值类型成员的数组 - 结果
- 请求的TypeCode
-
create_recursive_tc
public TypeCode create_recursive_tc(String id)
在创建包含递归的TypeCode的过程中创建一个递归的TypeCode对象,该对象用作具体TypeCode的占位符。 id参数指定递归TypeCode作为占位符的类型的存储库ID。 一旦递归的TypeCode已正确嵌入到与指定的存储库ID相对应的封闭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; };递归类型只能出现在可以为空的序列中。 当在任何一个传输结构时,这样解决问题就会被避免。
- 参数
-
id- 引用类型的逻辑ID - 结果
- 请求的TypeCode
-
create_value_box_tc
public TypeCode create_value_box_tc(String id, String name, TypeCode boxed_type)
为IDL值框创建一个TypeCode对象。- 参数
-
id- 值类型的逻辑ID -
name- 值类型的名称 -
boxed_type- 类型的TypeCode - 结果
- 请求的TypeCode
-
create_any
public abstract Any create_any()
创建一个IDLAny对象,初始化对象包含一个Typecode对象,其对象的kind字段设置为TCKind.tc_null。- 结果
-
一个新创的
Any对象
-
get_current
@Deprecated public Current get_current()
已过时。 使用resolve_initial_references。检索Current对象。Current接口用于管理线程特定的信息,供业务(例如事务和安全性)使用。- 结果
-
一个新创建的
Current对象 - 另请参见:
-
CORBApackage comments for unimplemented features
-
run
public void run()
此操作阻止当前线程,直到ORB完成关闭进程,当某个线程调用shutdown时启动。 它可能被多个线程使用,当ORB关闭时,它们会被通知。
-
shutdown
public void shutdown(boolean wait_for_completion)
指示ORB关闭,这导致所有对象适配器关闭,以备破坏。
如果wait_for_completion参数为真,则此操作将阻塞,直到完成所有ORB处理(包括处理当前正在执行的请求,对象禁用和其他对象适配器操作)为止。 如果一个应用程序在当前处于调用状态的线程中执行此操作,则OMG次要代码3将抛出BAD_INV_ORDER系统异常,因为阻塞将导致死锁。
如果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()
返回true如果ORB需要主线程来执行某些工作,并false如果ORB不需要主线程。- 结果
-
true如果有待处理的工作,意味着ORB需要主线程执行一些工作;false如果没有正在工作,因此ORB不需要主线程
-
perform_work
public void perform_work()
如果主线程调用,则执行依赖于实现的工作单元。 否则它什么都不做。 方法work_pending和perform_work可以结合使用来实现在ORB和其他活动之间复用主线程的简单轮询循环。
-
get_service_information
public boolean get_service_information(short service_type, ServiceInformationHolder service_info)用于获取有关该ORB支持的CORBA设施和服务的信息。 正在请求信息的服务类型作为参数service_type,CORBA模块中由常量定义的值。 如果服务信息可用于该类型,则返回参数service_info,并且操作返回值true。 如果没有所请求的服务类型的信息可用,则操作返回false(即,该ORB不支持该服务)。- 参数
-
service_type- 表示正在请求信息的服务类型的short -
service_info- 一个ServiceInformationHolder对象,将保存由此方法生成的ServiceInformation对象 - 结果
-
true如果服务信息可用于service_type;false如果没有所请求的服务类型的信息可用 - 另请参见:
-
CORBApackage comments for unimplemented features
-
create_dyn_any
@Deprecated public DynAny create_dyn_any(Any value)
已过时。 使用新的DynAnyFactory API创建一个新DynAny从给定对象Any对象。- 参数
-
value-Any对象,从中创建一个新的DynAny对象 - 结果
-
新
DynAny从给定创建的对象Any对象 - 另请参见:
-
CORBApackage comments for unimplemented features
-
create_basic_dyn_any
@Deprecated public DynAny create_basic_dyn_any(TypeCode type) throws InconsistentTypeCode
已过时。 使用新的DynAnyFactory API创建一个基本DynAny从给定对象TypeCode对象。- 参数
-
type-TypeCode对象,从中创建一个新的DynAny对象 - 结果
-
新
DynAny从给定创建的对象TypeCode对象 - 异常
-
InconsistentTypeCode- 如果给定的TypeCode对象与操作不一致。 - 另请参见:
-
CORBApackage comments for unimplemented features
-
create_dyn_struct
@Deprecated public DynStruct create_dyn_struct(TypeCode type) throws InconsistentTypeCode
已过时。 使用新的DynAnyFactory API创建一个新DynStruct从给定对象TypeCode对象。- 参数
-
type-TypeCode创建DynStruct对象的DynStruct对象 - 结果
-
新
DynStruct从给定创建的对象TypeCode对象 - 异常
-
InconsistentTypeCode- 如果给定的TypeCode对象与操作不一致。 - 另请参见:
-
CORBApackage comments for unimplemented features
-
create_dyn_sequence
@Deprecated public DynSequence create_dyn_sequence(TypeCode type) throws InconsistentTypeCode
已过时。 使用新的DynAnyFactory API创建一个新DynSequence从给定对象TypeCode对象。- 参数
-
type-TypeCode创建新的DynSequence对象的DynSequence对象 - 结果
-
新
DynSequence从给定创建的对象TypeCode对象 - 异常
-
InconsistentTypeCode- 如果给定的TypeCode对象与操作不一致。 - 另请参见:
-
CORBApackage comments for unimplemented features
-
create_dyn_array
@Deprecated public DynArray create_dyn_array(TypeCode type) throws InconsistentTypeCode
已过时。 使用新的DynAnyFactory API创建一个新DynArray从给定对象TypeCode对象。- 参数
-
type-TypeCode对象,从中创建一个新的DynArray对象 - 结果
-
新
DynArray从给定创建的对象TypeCode对象 - 异常
-
InconsistentTypeCode- 如果给定的TypeCode对象与操作不一致。 - 另请参见:
-
CORBApackage comments for unimplemented features
-
create_dyn_union
@Deprecated public DynUnion create_dyn_union(TypeCode type) throws InconsistentTypeCode
已过时。 使用新的DynAnyFactory API创建一个新DynUnion从给定对象TypeCode对象。- 参数
-
type-TypeCode创建一个新的DynUnion对象的DynUnion对象 - 结果
-
新
DynUnion从给定创建的对象TypeCode对象 - 异常
-
InconsistentTypeCode- 如果给定的TypeCode对象与操作不一致。 - 另请参见:
-
CORBApackage comments for unimplemented features
-
create_dyn_enum
@Deprecated public DynEnum create_dyn_enum(TypeCode type) throws InconsistentTypeCode
已过时。 使用新的27088056292120 API代替创建一个新DynEnum从给定对象TypeCode对象。- 参数
-
type-TypeCode创建一个新的DynEnum对象的DynEnum对象 - 结果
-
新
DynEnum从给定创建的对象TypeCode对象 - 异常
-
InconsistentTypeCode- 如果给定的TypeCode对象与操作不一致。 - 另请参见:
-
CORBApackage comments for unimplemented features
-
create_policy
public Policy create_policy(int type, Any val) throws PolicyError
可以调用以创建具有指定初始状态的特定类型的策略对象的新实例。 如果create_policy由于无法解释策略的请求类型和内容而无法实例化新的Policy对象,则会由于适当的原因引发PolicyError异常。- 参数
-
type- 要创建的策略对象的PolicyType -
val- 将用于设置创建的Policy对象的初始状态的值 - 结果
-
引用由
type参数指定的类型新建的Policy对象,并初始化为由val参数指定的状态 - 异常
-
PolicyError- when the requested policy is not supported or a requested initial state for the policy is not supported.
-
-