- 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 方法 描述 void
connect(Object obj)
将给定的服务对象(作为服务器实现类的实例的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)
创建一个表示IDLalias
(typedef
)的TypeCode
对象。abstract Any
create_any()
创建一个IDLAny
对象,初始化为包含其kind
字段设置为TCKind.tc_null
的Typecode
对象。abstract TypeCode
create_array_tc(int length, TypeCode element_type)
创建TypeCode
表示IDL对象array
。DynAny
create_basic_dyn_any(TypeCode type)
已过时。使用新的DynAnyFactory APIabstract ContextList
create_context_list()
创建一个空的ContextList
对象。DynAny
create_dyn_any(Any value)
已过时。使用新的DynAnyFactory APIDynArray
create_dyn_array(TypeCode type)
已过时。使用新的DynAnyFactory APIDynEnum
create_dyn_enum(TypeCode type)
已过时。使用新的DynAnyFactory APIDynSequence
create_dyn_sequence(TypeCode type)
已过时。使用新的DynAnyFactory APIDynStruct
create_dyn_struct(TypeCode type)
已过时。使用新的DynAnyFactory APIDynUnion
create_dyn_union(TypeCode type)
已过时。使用新的DynAnyFactory APIabstract TypeCode
create_enum_tc(String id, String name, String[] members)
创建一个表示IDL枚举
的TypeCode
对象。abstract Environment
create_environment()
创建一个Environment
对象。abstract ExceptionList
create_exception_list()
创建一个空的ExceptionList
对象。abstract TypeCode
create_exception_tc(String id, String name, StructMember[] members)
创建一个表示IDLexception
的TypeCode
对象。TypeCode
create_fixed_tc(short digits, short scale)
为IDL固定类型创建一个TypeCode
对象。abstract TypeCode
create_interface_tc(String id, String name)
创建一个表示IDLinterface
的TypeCode
对象。abstract NVList
create_list(int count)
分配一个NVList
(可能)足够的空间用于指定数量的NamedValue
对象。abstract NamedValue
create_named_value(String s, Any any, int flags)
使用给定的名称,值和参数模式标志创建一个NamedValue
对象。TypeCode
create_native_tc(String id, String name)
为IDL本机类型创建一个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的过程中,创建一个递归的TypeCode
对象,该对象用作具体的TypeCode的占位符。abstract TypeCode
create_sequence_tc(int bound, TypeCode element_type)
创建代表IDLsequence
的TypeCode
对象。abstract TypeCode
create_string_tc(int bound)
创建一个TypeCode
对象,代表有界的IDLstring
。abstract TypeCode
create_struct_tc(String id, String name, StructMember[] members)
创建一个表示IDLstruct
的TypeCode
对象。abstract TypeCode
create_union_tc(String id, String name, TypeCode discriminator_type, UnionMember[] members)
创建一个表示IDLunion
的TypeCode
对象。TypeCode
create_value_box_tc(String id, String name, TypeCode boxed_type)
为IDL值框创建一个TypeCode
对象。TypeCode
create_value_tc(String id, String name, short type_modifier, TypeCode concrete_base, ValueMember[] members)
为IDL值类型创建一个TypeCode
对象。abstract TypeCode
create_wstring_tc(int bound)
代表一个有界的IDLwstring
(宽字符串)的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)
为一个小程序创建一个新的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)
允许使用给定的小程序和参数初始化ORB实现。protected abstract void
set_parameters(String[] args, Properties props)
允许使用给定的参数和属性初始化ORB实现。void
shutdown(boolean wait_for_completion)
指示ORB关闭,这导致所有对象适配器关闭,以备破坏。
如果wait_for_completion
参数为真,则此操作将阻塞,直到完成所有ORB处理(包括处理当前正在执行的请求,对象停用和其他对象适配器操作)为止。abstract Object
string_to_object(String str)
将由方法object_to_string
生成的字符串转换回CORBA对象引用。boolean
work_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
对象 - 另请参见:
-
CORBA
package 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
如果没有所请求的服务类型的信息可用 - 另请参见:
-
CORBA
package comments for unimplemented features
-
create_dyn_any
@Deprecated public DynAny create_dyn_any(Any value)
已过时。 使用新的DynAnyFactory API创建一个新DynAny
从给定对象Any
对象。- 参数
-
value
-Any
对象,从中创建一个新的DynAny
对象 - 结果
-
新
DynAny
从给定创建的对象Any
对象 - 另请参见:
-
CORBA
package 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
对象与操作不一致。 - 另请参见:
-
CORBA
package 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
对象与操作不一致。 - 另请参见:
-
CORBA
package 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
对象与操作不一致。 - 另请参见:
-
CORBA
package 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
对象与操作不一致。 - 另请参见:
-
CORBA
package 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
对象与操作不一致。 - 另请参见:
-
CORBA
package 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
对象与操作不一致。 - 另请参见:
-
CORBA
package 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.
-
-