JavaTM 2 Platform
Standard Ed. 5.0

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 对象。

类似地,还需要为响应、所期望的结果或异常提供类型信息,因此方法 resultexcept 使用 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 必须调用此方法一次,即使该方法签名不包含任何参数。一旦已经调用 argumentsset_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 必须调用此方法一次,即使该方法签名不包含任何参数。一旦已经调用 argumentsset_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_voidAny 对象作为参数。在调用 arguments 方法之前调用 set_result 方法,或者在调用 set_resultset_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_voidAny 对象作为参数。在调用 arguments 方法之前调用 set_result 方法,或者在调用 set_resultset_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 对象

set_exception

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 包中有关未实现特性的注释

ctx

public abstract Context ctx()
当操作不是一个属性访问并且该操作的 IDL 定义中包含上下文表达式时,该操作返回用 IDL 指定的上下文信息;否则返回 nil Context 引用。在调用 arguments 方法之前调用 ctx 方法,或者在调用 ctxset_resultset_exception 方法之后调用该方法都将导致 BAD_INV_ORDER 系统异常。

返回:
Context 对象,将使用该对象来解析任何其值需要与调用一起发送的上下文字符串
抛出:
BAD_INV_ORDER - 如果 (1) 在调用 arguments 方法之前调用 ctx 方法或 (2) 在调用 set_resultset_exception 之后调用 ctx 方法

JavaTM 2 Platform
Standard Ed. 5.0

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java 2 SDK SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策