java.lang.Object org.omg.CORBA.ServerRequest
public abstract class ServerRequest
捕获对动态框架接口(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 |
构造方法详细信息 |
---|
public ServerRequest()
方法详细信息 |
---|
@Deprecated public String op_name()
_get_<attribute_name>
和
_set_<attribute_name>
。
public String operation()
org.omg.CORBA.NO_IMPLEMENT
异常。
检索将被调用的操作的名称。根据 OMG IDL 的规则,这些名称在此对象的“最终派生”接口所支持的所有操作中必须是唯一的。注意,用来获取和设置属性的操作名称分别是 _get_<attribute_name>
和 _set_<attribute_name>
。
CORBA
包中有关未实现特性的注释
@Deprecated public void params(NVList params)
arguments
注意,此方法已过时,使用 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
对象形式的方法参数
public void arguments(NVList args)
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
包中有关未实现特性的注释
@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
对象
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
包中有关未实现特性的注释
@Deprecated public void except(Any any)
any
- 包含异常的
Any
对象
public void set_exception(Any any)
org.omg.CORBA.NO_IMPLEMENT
异常。
将给定异常返回给客户端。此方法由 DIR 随时调用。传递给此方法的 Any
对象必须包含一个系统异常,或者所调用操作 IDL 定义中指定的用户异常之一。传入不包含任何异常的 Any
对象将导致抛出 BAD_PARAM 系统异常。传入未列出的用户异常将导致 DIR 收到一个 BAD_PARAM 系统异常,或导致客户端收到一个 UNKNOWN_EXCEPTION 系统异常。
any
- 包含异常的
Any
对象
BAD_PARAM
- 如果给定
Any
对象不包含异常,或者该异常是一个未列出的用户异常
UNKNOWN_EXCEPTION
- 如果给定异常是一个未列出的用户异常,并且 DIR 没有收到 BAD_PARAM 异常
CORBA
包中有关未实现特性的注释
public abstract Context ctx()
Context
引用。在调用
arguments
方法之前调用
ctx
方法,或者在调用
ctx
、
set_result
或
set_exception
方法之后调用该方法都将导致 BAD_INV_ORDER 系统异常。
BAD_INV_ORDER
- 如果 (1) 在调用
arguments
方法之前调用
ctx
方法或 (2) 在调用
set_result
或
set_exception
之后调用
ctx
方法