Module  java.corba
软件包  org.omg.CORBA

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

    类似地,需要为响应提供类型信息,对于预期结果或异常,因此方法resultexcept采用Any对象作为参数。

    另请参见:
    DynamicImplementationNVListNamedValue
    • 构造方法详细信息

      • ServerRequest

        public ServerRequest​()
    • 方法详细信息

      • 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必须正确调用此方法一次,即使方法签名不包含参数。 一旦方法argumentsset_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必须正确调用此方法一次,即使方法签名不包含参数。 一旦方法argumentsset_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_voidAny对象。 调用方法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_voidAny对象。 调用方法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已调用的方法或后ctxset_result ,或set_exception被称为将导致BAD_INV_ORDER系统异常。
        结果
        用于解析其值需要与调用一起发送的任何上下文字符串的上下文对象。
        异常
        BAD_INV_ORDER -如果(1)的方法 ctx方法之前被调用 arguments或(2)所述方法 ctx被称为主叫后 set_resultset_exception