JavaTM 2 Platform
Standard Ed. 6

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. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only