- java.lang.Object
-
- org.omg.CORBA.ServerRequest
-
public abstract class ServerRequest extends Object
捕获动态骨架接口(DSI)请求的显式状态的对象。 这个类是DSI的基石,类似于DII中的Request
对象。ORB负责创建请求的实施例,并将其传递给动态实现例程(DIR)。 动态
DynamicImplementation
(DIR)通过实现DynamicImplementation
类创建,该类具有单个invoke
方法。 此方法接受一个ServerRequest
对象。 抽象类ServerRequest
定义了访问方法名称,请求的参数和上下文的方法,以及将请求结果设置为返回值或异常的方法。访问请求的参数的微妙之处在于,DIR需要提供有关预期参数的类型信息,因为没有关于这些参数的编译信息。 此信息是通过
NVList
提供的,它是NamedValue
对象的列表。 每个NamedValue
对象包含一个Any
对象,而该对象又具有表示参数类型的TypeCode
对象。类似地,需要为响应提供类型信息,对于预期结果或异常,因此方法
result
和except
采用Any
对象作为参数。- 另请参见:
-
DynamicImplementation
,NVList
,NamedValue
-
-
构造方法摘要
构造方法 Constructor 描述 ServerRequest()
-
方法摘要
所有方法 接口方法 抽象方法 具体的方法 弃用的方法 Modifier and Type 方法 描述 void
arguments(NVList args)
指定方法参数类型并检索“in”和“inout”参数值。abstract Context
ctx()
当操作不是属性访问并且操作的IDL定义包含上下文表达式时,返回IDL中为操作指定的上下文信息; 否则返回Context
参考。void
except(Any any)
已过时。使用set_exception()String
op_name()
已过时。使用操作()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
例外。
-
-
-
方法详细信息
-
op_name
@Deprecated public String op_name()
已过时。 使用操作()检索被调用的操作的名称。 根据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
package comments for unimplemented features
-
params
@Deprecated public void params(NVList params)
已过时。 使用方法arguments
指定方法参数类型并检索“in”和“inout”参数值。请注意,此方法已弃用; 使用方法
arguments
在其位置。除非调用方法
set_exception
,否则DIR必须正确调用此方法一次,即使方法签名不包含参数。 一旦方法arguments
或set_exception
被调用,在同一个ServerRequest
对象上调用arguments
将导致一个BAD_INV_ORDER
系统异常。 DIR必须按照它们以IDL规范(从左到右)显示的顺序,arguments
用TypeCodes和Flags初始化的arguments
方法描述操作的参数类型的方法arguments
。 将从arguments
返回可能不同的arguments
,并提供“in”和“inout”参数值。 如果不调用方法set_exception
,则DIR必须在返回之前为返回的set_exception
提供任何“out”参数的返回值,并且还可以更改任何“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和Flags初始化的arguments
,按照它们在IDL规范中显示的顺序(从左到右)。 将从arguments
返回可能不同的arguments
,并提供“in”和“inout”参数值。 如果不调用方法set_exception
,DIR必须在返回之前为返回的set_exception
提供任何“out”参数的返回值,并且还可以更改任何“inout”参数的返回值。- 参数
-
args
- 该方法的参数,以args
的形式 - 另请参见:
-
CORBA
package comments for unimplemented features
-
result
@Deprecated public void result(Any any)
已过时。set_result
指定调用的任何返回值。请注意,此方法已弃用; 使用方法
set_result
在其位置。除非调用方法
set_exception
,否则如果调用的方法具有非空结果类型,那么方法set_result
在DIR返回之前必须正确调用一次。 如果操作具有无效结果类型,则方法set_result
可以可选地被调用一次,其类型为tk_void
的Any
对象。 调用方法set_result
方法之前arguments
被调用或方法之后set_result
或者set_exception
被称为将导致BAD_INV_ORDER异常。 当IDL操作包含上下文表达式时,或者当传递给参数的ctx
没有描述客户端传递的所有参数时,调用方法set_result
而无需先前调用方法ctx
,可能会导致MARSHAL系统异常。- 参数
-
any
- 一个包含要设置的返回值的Any
对象
-
set_result
public void set_result(Any any)
抛出一个org.omg.CORBA.NO_IMPLEMENT
异常。指定调用的任何返回值。 除非调用方法
set_exception
,否则调用的方法具有非空结果类型,那么方法set_result
在DIR返回之前必须精确调用一次。 如果操作具有无效结果类型,则方法set_result
可以可选地被调用一次,其类型为tk_void
的Any
对象。 调用方法set_result
方法之前arguments
被调用或方法之后set_result
或者set_exception
被称为将导致BAD_INV_ORDER异常。 当IDL操作包含上下文表达式时,或当传递给参数的ctx
没有描述客户端传递的所有参数时,调用方法set_result
而不先前称为方法ctx
,可能会导致MARSHAL系统异常。- 参数
-
any
- 一个包含要设置的返回值的Any
对象 - 另请参见:
-
CORBA
package comments for unimplemented features
-
except
@Deprecated public void except(Any any)
已过时。 使用set_exception()DIR可以随时调用set_exception将异常返回给客户端。 传递给set_exception的Any必须包含在调用操作的IDL定义的raise表达式中指定的系统异常或用户异常。 传入任何不包含异常的任何将导致BAD_PARAM系统异常。 传递未列出的用户异常将导致DIR接收到BAD_PARAM系统异常,或者在客户端中接收到UNKNOWN系统异常。- 参数
-
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系统异常。- 参数
-
any
- 包含异常的Any
对象 - 异常
-
BAD_PARAM
- 如果给定的Any
对象不包含异常,或异常是不公开的用户异常 -
UNKNOWN
- 如果给定的异常是不公开的用户异常,并且DIR没有收到BAD_PARAM异常 - 另请参见:
-
CORBA
package comments for unimplemented features
-
ctx
public abstract Context ctx()
当操作不是属性访问并且操作的IDL定义包含上下文表达式时,返回IDL中为操作指定的上下文信息; 否则返回Context
参考。 调用方法ctx
方法之前arguments
已调用的方法或后ctx
,set_result
,或set_exception
被称为将导致BAD_INV_ORDER系统异常。- 结果
- 用于解析其值需要与调用一起发送的任何上下文字符串的上下文对象。
- 异常
-
BAD_INV_ORDER
-如果(1)的方法ctx
方法之前被调用arguments
或(2)所述方法ctx
被称为主叫后set_result
或set_exception
-
-