org.omg.CORBA

接口
异常
提供 OMG CORBA API 到 Java TM 编程语言的映射,包括 ORB 类,如果已实现该类,则程序员可以使用此类作为全功能对象请求代理(Object Request Broker,ORB)。

请参见:
          描述

接口摘要
ARG_IN 向调用符号化 "input" 参数,表示从客户端将该参数传递到服务器。
ARG_INOUT 表示用于某一调用的输入和输出的参数,意味着将该参数从客户端传到服务器,然后再从服务器传回客户端。
ARG_OUT 表示调用的 "input" 参数的常量,意味着从服务器将该参数传递到客户端。
BAD_POLICY 将填充在 PolicyError 异常中的 PolicyErrorCode
BAD_POLICY_TYPE 将填充在 PolicyError 异常中的 PolicyErrorCode
BAD_POLICY_VALUE 包含指示某个策略值的值,该策略值对于 create_policy 方法(在 ORB 类中定义)调用中的有效策略类型而言是不正确的。
CTX_RESTRICT_SCOPE 可以用作 Context.get_values 方法的第二个参数以限制搜索范围的标志。
Current Current 接口派生的接口允许 ORB 和 CORBA 服务访问与它们正运行的执行线程关联的信息(上下文)。
CurrentOperations Current 的接口。
CustomMarshal 将由 ORB 而不是由用户使用的抽象 value 类型。
DataInputStream 定义用来从输入流读取基本数据类型的方法,以便解组自定义值类型。
DataOutputStream 定义用来将基本数据类型写入输出流的方法,以便编组自定义值类型。
DomainManager 提供用来建立关系并将其导航到高级域和从属域的机制,以及用来创建和访问策略的机制。
DomainManagerOperations DomainManager 提供访问策略的方法。
DynAny 已过时。 使用新的 DynAny 替代
DynArray 已过时。 使用新的 DynArray 替代
DynEnum 已过时。 使用新的 DynEnum 替代
DynFixed 已过时。 使用新的 DynFixed 替代
DynSequence 已过时。 使用新的 DynSequence 替代
DynStruct 已过时。 使用新的 DynStruct 替代
DynUnion 已过时。 使用新的 DynUnion 替代
DynValue 已过时。 使用新的 DynValue 替代
IDLType 由所有表示 OMG IDL 类型的接口存储库(Interface Repository,IR)对象继承的抽象接口。
IDLTypeOperations 此接口必须由所有 IDLType 对象实现。
IRObject IRObject IDL 接口表示最一般的接口,其他所有 Interface Repository 接口(甚至包括 Repository 自身)都派生自该接口。
IRObjectOperations 这是用于 IRObject 的映射的 Operations 接口。
Object CORBA 对象引用的定义。
OMGVMCID 为 OMG 保留的供应商次要代码 (minor code) ID。
Policy 派生自 Policy 接口的接口允许 ORB 或 CORBA 服务访问影响其操作的某些选项。
PolicyOperations 提供针对某一 Policy 对象的操作。
PRIVATE_MEMBER 定义 ValueMember 类中私有成员的常量。
PUBLIC_MEMBER 定义 ValueMember 类中公共成员的常量。
UNSUPPORTED_POLICY 在所请求的 Policy 被 ORB 认为是有效的,但目前不受支持时将被填充的一个 PolicyErrorCode
UNSUPPORTED_POLICY_VALUE 当所请求的 Policy 值是有效类型并且在该类型的有效范围内,但该有效值目前不受支持时将被填充的 PolicyErrorCode
VM_ABSTRACT 定义用来表示 typecode 中的 Abstract 接口的代码。
VM_CUSTOM 定义用来表示类型代码中自定义编组值类型的代码。
VM_NONE 定义代码,用来表示一个 typecode 中值类型的值。
VM_TRUNCATABLE 定义用来表示 typecode 中可截断值类型的代码。
 

类摘要
_IDLTypeStub IDLType 的 Stub。
_PolicyStub Policy 的 Stub。
Any 充当可用 IDL 描述的任何数据或任何 IDL 基本类型的容器。
AnyHolder Any 的 Holder。
AnySeqHelper AnySeq 的 Helper。
AnySeqHolder AnySeq 的 Holder。
BooleanHolder Boolean 的 Holder。
BooleanSeqHelper BooleanSeq 的 Helper。
BooleanSeqHolder BooleanSeq 的 Holder。
ByteHolder Byte 的 Holder。
CharHolder Char 的 Holder。
CharSeqHelper CharSeq 的 Helper。
CharSeqHolder CharSeq 的 Holder。
CompletionStatus 指示某一方法抛出 SystemException 时是否已结束运行的对象。
CompletionStatusHelper CompletionStatus 的 Helper。
Context 用于在 Request 操作中指定上下文对象的对象,上下文字符串在与请求调用一起被发送之前,必须在该指定的上下文对象中进行解析。
ContextList 一个对象,它包含表示属性名称的 String 对象所组成的可修改列表。
CurrentHelper Current 的 Helper。
CurrentHolder Current 的 Holder。
DefinitionKind 该类提供用来标识接口存储库 (Interface Repository) 对象类型的常量。
DefinitionKindHelper DefinitionKind 的 Helper。
DoubleHolder Double 的 Holder。
DoubleSeqHelper DoubleSeq 的 Helper。
DoubleSeqHolder DoubleSeq 的 Holder。
DynamicImplementation 已过时。 org.omg.CORBA.DynamicImplementation
Environment 用于 Request 操作的异常的容器 (holder),使异常可用于客户端。
ExceptionList Request 操作中使用的对象,用于描述可由某一方法抛出的异常。
FieldNameHelper FieldName 的 Helper。
FixedHolder Fixed 的 Holder。
FloatHolder Float 的 Holder。
FloatSeqHelper FloatSeq 的 Helper。
FloatSeqHolder FloatSeq 的 Holder。
IdentifierHelper Identifier 的 Helper。
IDLTypeHelper IDLType 的 Helper。
IntHolder Int 的 Holder。
LocalObject 用作 Java 语言映射中的本地 IDL 接口实现的基本类。
LongHolder Long 值的 Holder。
LongLongSeqHelper LongLongSeq 的 Helper。
LongLongSeqHolder LongLongSeq 的 Holder。
LongSeqHelper LongSeqHelper 的 Helper。
LongSeqHolder LongSeq 的 Holder。
NamedValue 在 DII 和 DSI 中用来描述参数和返回值的对象。
NameValuePair 将某一名称与一个属性为 IDL struct 的值关联,并在 DynStruct API 中使用。
NameValuePairHelper NameValuePair 的 Helper。
NVList 包含 NamedValue 对象所组成的可修改列表。
ObjectHelper  
ObjectHolder Object 的 Holder。
OctetSeqHelper OctetSeq 的 Helper。
OctetSeqHolder OctetSeq 的 Holder。
ORB 为 CORBA 对象请求代理 (Object Request Broker) 特性提供 API 的类。
ParameterMode Parameter 参数模式的枚举。
ParameterModeHelper Parameter 参数模式的枚举。
ParameterModeHolder Parameter 参数模式的枚举。
PolicyErrorCodeHelper 封装 Policy 无效的原因。
PolicyErrorHelper 抛出 PolicyError 指示传递给 ORB.create_policy 操作的参数值存在问题。
PolicyErrorHolder 抛出 PolicyError 指示传递给 ORB.create_policy 操作的参数值存在问题。
PolicyHelper Policy 的 Helper。
PolicyHolder Policy 的 Holder。
PolicyListHelper PolicyList 的 Helper。
PolicyListHolder PolicyList 的 Holder。
PolicyTypeHelper PolicyType 的 Helper。
Principal 已过时。 已由 CORBA 2.2 取代。
PrincipalHolder 已过时。 Deprecated by CORBA 2.2.
RepositoryIdHelper RepositoryId 的 Helper。
Request 包含调用某一方法所必需的信息的对象。
ServerRequest 捕获对动态框架接口(Dynamic Skeleton Interface,DSI)请求的显式状态的对象。
ServiceDetail 表示 ORB 服务的对象:其 service_detail_type 字段包含 ORB 服务的类型,其 service_detail 字段包含 ORB 服务的描述。
ServiceDetailHelper  
ServiceInformation CORBA 模块中的 IDL struct,用于存储关于 ORB 实现中可用 CORBA 服务的信息,可使用 ORB.get_service_information 方法获取。
ServiceInformationHelper  
ServiceInformationHolder ServiceInformation 的 Holder。
SetOverrideType 标记 SET_OVERRIDEADD_OVERRIDE 的 CORBA enum 的映射,它指示这些策略是应该替换 Object 的现有策略还是应该被添加到现有策略中。
SetOverrideTypeHelper SetOverrideType 的 Helper。
ShortHolder Short 的 Holder。
ShortSeqHelper ShortSeqHelper 的 Helper。
ShortSeqHolder ShortSeq 的 Holder。
StringHolder String 的 Holder。
StringSeqHelper String 数组
StringSeqHolder String 数组
StringValueHelper StringValue 的 Helper。
StructMember 描述接口存储库 (Interface Repository) 中一个 IDL struct 成员,包括该 struct 成员的名称、该 struct 成员的类型以及表示该 struct 成员(被描述为 struct 成员对象)IDL 类型的 typedef。
StructMemberHelper StructMember 的 Helper。
TCKind IDL enum TCKind 的 Java 映射,TCKind 指定 TypeCode 对象的种类。
TypeCode 用于有关特定 CORBA 数据类型的信息的容器。
TypeCodeHolder TypeCode 的 Holder。
ULongLongSeqHelper ULongLongSeq 的 Helper。
ULongLongSeqHolder ULongLongSeq 的 Holder。
ULongSeqHelper ULongSeq 的 Helper。
ULongSeqHolder ULongSeq 的 Holder。
UnionMember 接口存储库 (Interface Repository) 中关于 IDL union 成员的描述。
UnionMemberHelper UnionMember 的 Helper。
UnknownUserExceptionHelper UnknownUserException 的 Helper。
UnknownUserExceptionHolder UnknownUserException 的 Holder。
UShortSeqHelper UShortSeq 的 Helper。
UShortSeqHolder UShortSeq 的 Holder。
ValueBaseHelper  
ValueBaseHolder ValueBase 的 Holder。
ValueMember 接口存储库 (Interface Repository) 中关于 value 对象成员的描述。
ValueMemberHelper ValueMember 的 Helper。
VersionSpecHelper VersionSpec 的 Helper。
VisibilityHelper Visibility 的 Helper。
WCharSeqHelper WCharSeq 的 Helper。
WCharSeqHolder WCharSeq 的 Holder。
WrongTransactionHelper WrongTransaction 的 Helper。
WrongTransactionHolder WrongTransaction 的 Holder。
WStringSeqHelper WString 数组
WStringSeqHolder WString 数组
WStringValueHelper org/omg/CORBA/WStringValueHelper.java 由 "3.0" 版的 IDL-to-Java 编译器(可移植)从 orb.idl 中生成,生成时间为 1999 年 5 月 31 日 22:27:30 (GMT+00:00) 类定义已经修改,以遵守以下 OMG 规范: 由 CORBA 2.3.1 定义的 ORB 核心 (formal/99-10-07) ptc/00-01-08 中定义的 IDL/Java 语言映射
 

异常摘要
ACTIVITY_COMPLETED ACTIVITY_COMPLETED 系统异常可以在任何访问 Activity 上下文的方法上引发。
ACTIVITY_REQUIRED ACTIVITY_REQUIRED 系统异常可以在任何需要 Activity 上下文的方法上引发。
BAD_CONTEXT 当客户端调用某一操作,但传递的上下文中不包含该操作所需的上下文值时,抛出该异常。
BAD_INV_ORDER 此异常指示调用者按错误顺序调用了操作。
BAD_OPERATION 当对象引用表示某一现有对象,但该对象并不支持调用的操作时,抛出该异常。
BAD_PARAM 当传递给某一调用的参数超出范围或被认为不合法时,抛出该异常。
BAD_QOS 只要对象无法支持调用参数(具有与之关联的服务质量语义的参数)所需的服务质量,就会引发 BAD_QOS 异常。
BAD_TYPECODE 当 ORB 遇到错误的类型代码(例如,具有无效 TCKind 值的类型代码)时,抛出该异常。
Bounds 当参数不在某一方法试图访问的对象的合法范围内时,抛出该用户异常。
CODESET_INCOMPATIBLE 当客户端和服务器本机代码集之间不能进行有意义的通信时,抛出此异常。
COMM_FAILURE 如果某一操作正在进行时失去通信,此时客户端已经发送了请求,但服务器的应答尚未返回到客户端,则引发此异常。
DATA_CONVERSION 如果 ORB 无法将已编组数据的表示形式转换成其本机表示形式,则引发此异常,反之亦然。
FREE_MEM 当 ORB 试图释放动态内存但却因为某些原因(例如因为堆损坏或内存块被锁定)而失败时,抛出此异常。
IMP_LIMIT 此异常指示在 OBR 运行时超过了某一项实现限制。
INITIALIZE ORB 在其初始化期间出错(例如无法获得网络资源或检测配置错误)时,抛出此异常。
INTERNAL 此异常指示 ORB 中存在内部错误,例如,在 ORB 检测到其内部数据结构被损坏时将抛出此异常。
INTF_REPOS 当 ORB 无法到达接口存储库,或者检测到其他与接口存储库相关的错误时,引发此异常。
INV_FLAG 在将无效标志传递给某项操作时(例如,在创建 DII 请求时),抛出此异常。
INV_IDENT 此异常指示 IDL 标识符在语法上是无效的。
INV_OBJREF 此异常指示对象引用存在内部错误。
INV_POLICY 当应用于特定调用的 Policy 重写之间不兼容而导致无法进行调用时,抛出此标准异常。
INVALID_ACTIVITY 如果在不同于其处于挂起状态时所在的上下文中恢复事务或 Activity,则在该 Activity 或 Transaction 服务的恢复方法上引发 INVALID_ACTIVITY 系统异常。
INVALID_TRANSACTION 当请求带有无效的事务上下文时,抛出此异常。
MARSHAL 表示网络中传来的请求或应答在结构上无效。
NO_IMPLEMENT 此异常指示,尽管被调用的操作存在(它有一个 IDL 定义),但不存在该操作的实现。
NO_MEMORY 如果 ORB 运行时出现内存不足,则抛出此异常。
NO_PERMISSION 当因为调用者没有足够的权限而导致调用失败时,抛出此异常。
NO_RESOURCES 当 ORB 遇到一些一般资源限制时,抛出此异常。
NO_RESPONSE 如果某客户端试图检索延迟同步调用的结果,但请求的响应尚不可用,则抛出此异常。
OBJ_ADAPTER 此异常通常指示管理方面的不匹配,例如,某台服务器可能试图在实现存储库中使用已经在使用或存储库未知的名称注册它自身。
OBJECT_NOT_EXIST 只要在已删除的对象上执行调用,就会引发此异常。
PERSIST_STORE 此异常指示一个持久存储错误,例如,无法建立数据库连接或者某个数据库损坏。
PolicyError 发生策略错误时抛出的用户异常。
REBIND 如果当前有效 RebindPolicy 具有 NO_REBIND 或 NO_RECONNECT 值,且对绑定的对象引用执行调用时生成状态为 OBJECT_FORWARD 的 LocateReply 消息或状态为 LOCATION_FORWARD 的 Reply 消息,则将引发 REBIND
SystemException 所有 CORBA 标准异常的根类。
TIMEOUT 当已超过指定生存时间却没有做出任何交付时,引发 TIMEOUT 异常。
TRANSACTION_MODE 如果客户端 ORB 检测到 IOR 中的 InvocationPolicy 与选中的调用路径(即直接或路由调用)不匹配,则它将抛出 CORBA TRANSACTION_MODE 异常。
TRANSACTION_REQUIRED 此异常指示请求带有一个 null 事务上下文,但需要的是激活的事务。
TRANSACTION_ROLLEDBACK 当与请求处理关联的事务已回滚或已标记为回滚时,抛出此异常。
TRANSACTION_UNAVAILABLE 当由于到事务服务 (Transaction Service) 的连接已异常终止而无法处理事务服务上下文时,由 ORB 抛出 CORBA TRANSACTION_UNAVAILABLE 异常。
TRANSIENT 当 ORB 试图到达某一对象但失败时,抛出此异常。
UNKNOWN 如果操作实现抛出一个非 CORBA 异常(比如特定于该实现编程语言的异常),或者某一操作引发没有出现在该操作引发表达式中的用户异常,则将引发此异常。
UnknownUserException 包含由服务器返回的用户异常的类。
UserException CORBA IDL 定义的用户异常的根类。
WrongTransaction CORBA WrongTransaction 用户定义异常。
 

软件包 org.omg.CORBA 的描述

提供 OMG CORBA API 到 JavaTM 编程语言的映射,包括 ORB 类,如果已实现该类,则程序员可以使用此类作为全功能对象请求代理(Object Request Broker,ORB)。

有关 Java[TM] Platform,Standard Edition 6 遵守的受支持官方 CORBA 规范部分的明确列表,请参阅 Official Specifications for CORBA support in Java[TM] SE 6

常规信息

这一节中的信息与编译接口定义语言(Interface Definition Language,IDL)文件以及使用 ORB 编写客户端和服务器的用户有关。

这一节中描述的类和接口可分为四组:ORB 类、异常、Helper 类和 Holder 类。

ORB

ORB 处理(或代理)客户端与服务器上的方法实现之间的方法调用。因为客户端和服务器可能位于网络的任何地方,调用和实现可能以不同的编程语言编写,所以 ORB 在后台做了很多工作来实现此通信。

ORB 所做的大部分工作对于用户而言是完全透明的,CORBA 包的主要部分由 ORB 在后台使用的类组成。因此大部分程序员将只直接使用此包的一小部分。实际上,大多数程序员仅使用 ORB 类和一些异常中的少数方法,偶尔也使用 holder 类中的少数方法。

ORB 方法

在应用程序进入 CORBA 环境之前,它必须先执行以下操作:

  • 被初始化为 ORB 环境,也可能是对象适配器 (POA) 环境。
  • 获取对 ORB 对象的引用(在以后的 ORB 操作中使用),也可能获取对其他对象(包括根 POA 或一些 Object Adapter 对象)的引用。

提供以下操作来初始化应用程序及获得适当的对象引用:

  • 这一节中将讨论的可访问 ORB 的操作。
  • 可访问 Object Adapter、Interface Repository、Naming Service 和其他 Object Service 的操作。这些操作将在其他类 中描述。

当应用程序需要 CORBA 环境时,它需要一个机制来获取 ORB 对象引用,也可能是 OA 对象引用(比如根 POA)。此机制有两个用途。第一个用途是将应用程序初始化为 ORB 和 OA 环境。第二个用途是将 ORB 对象引用和 OA 对象引用返回给应用程序,以便在以后的 ORB 和 OA 操作中使用。

若要获取 ORB 对象引用,应用程序应调用 ORB.init 操作。该调用的参数可能由 ORB 的标识符和 arg_list 组成,前者是对象引用所需要的,后者用于允许将特定于环境的数据传递给调用。

以下 ORB 方法可以访问 ORB:

  • init ()
  • init (String [] args, Properties props)
  • init (Applet app, Properties props)

使用不带参数的 init() 方法可以实例化一个单件 ORB,它只能为创建 typecode 提供 any,在通过 idlj 在 Helper 类中生成的代码中需要这些 any。

应用程序需要一个用来获得其初始对象引用的可移植方法。根 POA、POA Current、Interface Repository 和各种 Object Service 实例都需要引用。应用程序所需的功能类似于 Naming Service 提供的那些功能。但是,OMG 不应该要求 Naming Service 可用于所有应用程序以便能够以可移植方式初始化。因此,这一节中展示的操作提供了一个简化的本地 Naming Service,应用程序可以使用它来获取其操作所必须的一小组已定义对象引用。因为只期望从此机制中获得一小组定义良好的对象,所以命名上下文可能被简化为单一级别的名称空间。这种简化的结果是只定义两个操作来获得所需的功能。

初始引用是通过 ORB 对象接口中提供的两个操作获得的,该接口中提供了一些设施来列出并解析初始对象引用。这些工具包括:

  • resolve_initial_references (String name)
  • list_initial_services ()
  • register_initial_reference (String id, org.omg.CORBA.Object obj)

使用其中一些方法的示例见 Java IDL 入门

异常

Java IDL 中的异常类似于用 Java 编程语言编写的 any 代码中的那些异常。如果定义某一方法抛出异常,则使用该方法的 any 代码必须有一个 try/ catch 块,并在该异常抛出时进行处理。

关于 Java IDL 异常 的文档中有更多信息,这些文档解释了系统异常和用户定义异常之间的不同。

以下是包 org.omg.CORBA 中定义的系统异常的列表(这些异常是通过 org.omg.CORBA.SystemExceptionjava.lang.RuntimeException 中继承的未经检查异常):


        BAD_CONTEXT
        BAD_INV_ORDER
        BAD_OPERATION
        BAD_PARAM
        BAD_TYPECODE
        COMM_FAILURE
        DATA_CONVERSION
        FREE_MEM
        IMP_LIMIT
        INITIALIZE
        INTERNAL
        INTF_REPOS
        INVALID_TRANSACTION
        INV_FLAG
        INV_IDENT
        INV_OBJREF
        INV_POLICY
        MARSHAL
        NO_IMPLEMENT
        NO_MEMORY
        NO_PERMISSION
        NO_RESOURCES
        NO_RESPONSE
        OBJECT_NOT_EXIST
        OBJ_ADAPTER
        PERSIST_STORE
        TRANSACTION_REQUIRED
        TRANSACTION_ROLLEDBACK
        TRANSIENT
        UNKNOWN

以下是包 org.omg.CORBA 中定义的用户定义异常的列表。


        Bounds
        UnknownUserException
        WrongTransaction 
        PolicyError

子包

CORBA 包中的一些包用 "Package" 作为其名称的一部分。这些包通常非常小,因为这些包要做的所有事情就是提供异常或类,以便 CORBA 包中的接口和类使用。

例如,包 org.omg.CORBA.TypeCodePackage 包含两个由 TypeCode 类中的方法抛出的异常。这些异常包括:

  • BadKind
  • Bounds
org.omg.CORBA.ORBPackage 中包含以下两个异常:
  • InvalidName
  • InconsistentTypeCode

另一个 CORBA 的子包是 portable 包。该包提供了一组 ORB API,这些 API 使得某个供应商的 IDL 编译器所生成的代码能够在另一个供应商的 ORB 上运行。

Holder 类

支持 out 和 inout 参数传递模式需要使用附加 holder 类。因为 Java 编程语言不支持 out 或 inout 参数,holder 类便作为一种可修改的传递参数方式出现。为了支持可移植 stub 和 skeleton,holder 类还实现了 org.omg.CORBA.portable.Streamable 接口。

Holder 类是通过将 "Holder" 追加到类型名称中来命名的。类型名称是指它在 Java 编程语言中的名称。例如,在 Java 编程语言中名为 Account 的接口所对应的 holder 类应该命名为 AccountHolder

Holder 类可用于 org.omg.CORBA 包中的所有基本 IDL 数据类型。因此,对于 LongHolderShortHolderFloatHolder 等,都已经定义了相应的类。对于所有已命名用户定义的 IDL 类型(typedef