|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
org.omg.CORBA
类 ServerRequest
java.lang.Object org.omg.CORBA.ServerRequest
-
public abstract class ServerRequest
- extends Object
捕获对动态框架接口(Dynamic Skeleton Interface,DSI)请求的显式状态的对象。此类是 DSI 的基础,类似于 DII 中的 Request
对象。
ORB 负责创建具体的请求,并将它传递给动态实现例程(Dynamic Implementation Routine,DIR)。动态 servant(一个 DIR)是通过实现 DynamicImplementation
类创建的,该类有一个 invoke
方法。此方法接受 ServerRequest
对象。 抽象类 ServerRequest
定义了一些方法,用来访问请求的方法名称、参数和上下文,以及将该请求的结果设置为返回值或异常。
访问该请求参数的一个微妙之处在于:DIR 需要提供有关所期望参数的类型信息,因为没有关于这些类型的已编译信息。此信息是通过 NVList
提供的,NVList 是 NamedValue
对象列表。每个 NamedValue
对象都包含一个 Any
对象,每个 Any 对象都有一个表示参数类型的 TypeCode
对象。
类似地,还需要为响应、所期望的结果或异常提供类型信息,因此方法 result
和 except
使用 Any
对象作为参数。
- 另请参见:
DynamicImplementation
,NVList
,NamedValue
构造方法摘要 | |
---|---|
ServerRequest() |
方法摘要 | |
---|---|
void |
arguments(NVList args) 指定方法参数类型并检索 "in" 和 "inout" 参数值。 |
abstract Context |
ctx() 当操作不是一个属性访问并且该操作的 IDL 定义中包含上下文表达式时,该操作返回用 IDL 指定的上下文信息;否则返回 nil Context 引用。 |
void |
except(Any any) 已过时。 使用 set_exception() |
String |
op_name() 已过时。 使用 operation() |
String |
operation() 抛出一个 org.omg.CORBA.NO_IMPLEMENT 异常。 |
void |
params(NVList params) 已过时。 使用方法 arguments |
void |
result(Any any) 已过时。 使用方法 set_result |
void |
set_exception(Any any) 抛出一个 org.omg.CORBA.NO_IMPLEMENT 异常。 |
void |
set_result(Any any) 抛出一个 org.omg.CORBA.NO_IMPLEMENT 异常。 |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
构造方法详细信息 |
---|
ServerRequest
public ServerRequest()
方法详细信息 |
---|
op_name
@Deprecated public String op_name()
- 已过时。 使用 operation()
-
检索将被调用的操作的名称。根据 OMG IDL 的规则,这些名称在此对象的“最终派生”接口所支持的所有操作中必须是唯一的。注意,用来获取和设置属性的操作名称分别是
_get_<attribute_name>
和_set_<attribute_name>
。 -
- 返回:
- 要调用的操作的名称
operation
public String operation()
-
抛出一个
org.omg.CORBA.NO_IMPLEMENT
异常。检索将被调用的操作的名称。根据 OMG IDL 的规则,这些名称在此对象的“最终派生”接口所支持的所有操作中必须是唯一的。注意,用来获取和设置属性的操作名称分别是
_get_<attribute_name>
和_set_<attribute_name>
。 -
- 返回:
- 将被调用的操作的名称
- 另请参见:
CORBA
包中有关未实现特性的注释
params
@Deprecated public void params(NVList params)
- 已过时。 使用方法
arguments
-
指定方法参数类型并检索 "in" 和 "inout" 参数值。
注意,此方法已过时,使用
arguments
方法替代它。如果没有调用
set_exception
方法,则 DIR 必须调用此方法一次,即使该方法签名不包含任何参数。一旦已经调用arguments
或set_exception
方法,则对同一个ServerRequest
对象调用arguments
将导致BAD_INV_ORDER
系统异常。DIR 必须向方法arguments
传入使用 TypeCodes 初始化的 NVList 和描述该操作参数类型的 Flag,按照它们在 IDL 规范中出现的顺序(从左到右)传入。使用所提供的 "in" 和 "inout" 参数值,arguments
返回的 NVList 可能不同。如果没有调用set_exception
方法,则返回前 DIR 必须提供所返回的 NVList,该列表带有用于任何 "out" 参数的返回值,DIR 还可以更改用于任何 "inout" 参数的返回值。 -
- 参数:
params
-NVList
对象形式的方法参数
arguments
public void arguments(NVList args)
-
指定方法参数类型并检索 "in" 和 "inout" 参数值。如果没有调用
set_exception
方法,则 DIR 必须调用此方法一次,即使该方法签名不包含任何参数。一旦已经调用arguments
或set_exception
方法,则对同一个ServerRequest
对象调用arguments
将导致BAD_INV_ORDER
系统异常。DIR 必须向方法arguments
传入使用 TypeCodes 初始化的 NVList 和描述该操作参数类型的 Flag,按照它们在 IDL 规范中出现的顺序(从左到右)传入。使用所提供的 "in" 和 "inout" 参数值,arguments
返回的 NVList 可能不同。如果没有调用set_exception
方法,则返回前 DIR 必须提供所返回的 NVList,该列表带有用于任何 "out" 参数的返回值,DIR 还可以更改用于任何 "inout" 参数的返回值。 -
- 参数:
args
- NVList 形式的方法参数- 另请参见:
CORBA
包中有关未实现特性的注释
result
@Deprecated public void result(Any any)
- 已过时。 使用方法
set_result
-
为调用指定任何返回值。
注意,不推荐使用此方法,建议使用
set_result
方法替代它。如果没有调用
set_exception
方法,则在调用的方法有一个非 void 结果类型时,必须在 DIR 返回前调用set_result
方法一次。如果该操作有一个 void 结果类型,则可以有选择地调用set_result
方法一次,并使用类型为tk_void
的Any
对象作为参数。在调用arguments
方法之前调用set_result
方法,或者在调用set_result
或set_exception
方法之后调用该方法将导致 BAD_INV_ORDER 异常。当 IDL 操作包含一个上下文表达式,或者传递给 arguments 的 NVList 没有描述客户端传递的所有参数时,在调用set_result
方法之前没有调用ctx
方法将导致 MARSHAL 系统异常。 -
- 参数:
any
- 包含将被设置的返回值的Any
对象
set_result
public void set_result(Any any)
-
抛出一个
org.omg.CORBA.NO_IMPLEMENT
异常。为调用指定任何返回值。如果没有调用
set_exception
方法,则在调用的方法有一个非 void 结果类型时,必须在 DIR 返回前调用set_result
方法一次。如果该操作有一个 void 结果类型,则可以有选择地调用set_result
方法一次,并使用类型为tk_void
的Any
对象作为参数。在调用arguments
方法之前调用set_result
方法,或者在调用set_result
或set_exception
方法之后调用该方法将导致 BAD_INV_ORDER 异常。当 IDL 操作包含一个上下文表达式,或者传递给参数的 NVList 没有描述客户端传递的所有参数时,调用set_result
方法(没有首先调用ctx
方法)将导致 MARSHAL 系统异常。 -
- 参数:
any
- 包含将被设置的返回值的Any
对象- 另请参见:
CORBA
包中有关未实现特性的注释
except
@Deprecated public void except(Any any)
- 已过时。 使用 set_exception()
- DIR 可以随时调用 set_exception 向客户端返回异常。传递给 set_exception 的 Any 必须包含系统异常,或者所调用操作 IDL 定义的引发表达式中指定的用户异常。传入不包含任何异常的 Any 将导致 BAD_PARAM 系统异常。传入未列出的用户异常将导致 DIR 收到一个 BAD_PARAM 系统异常,或导致客户端收到一个 UNKNOWN_EXCEPTION 系统异常。
-
- 参数:
any
- 包含异常的Any
对象