JavaTM 2 Platform
Standard Ed. 6

org.omg.CORBA
類別 ORB

java.lang.Object
  繼承者 org.omg.CORBA.ORB
直接已知子類別:
ORB

public abstract class ORB
extends Object

為 CORBA 物件請求代理 (Object Request Broker) 特性提供 API 的類別。ORB 類別還提供“可插入 ORB 實作”API,該 API 允許使用另一個供應商的 ORB 實作。

通過連接發送請求的物件(客戶端)與回應請求的物件(伺服器),ORB 使 CORBA 物件彼此之間能夠進行通訊。

ORB 類別封裝了一些一般的 CORBA 功能,它可執行以下操作:(注意第 5 項和第 6 項,它們包含 ORB 類別中的大多數方法,通常與動態調用介面(Dynamic Invocation Interface,DII)和動態框架介面(Dynamic Skeleton Interface,DSI)一起使用。開發人員可以直接使用這些介面,但大多數情況下,這些介面常常由 ORB 內部使用,這對於普通開發人員是不可見的。)

  1. 通過為預先定義的屬性和環境參數提供值來初始化 ORB 實作
  2. 使用方法 resolve_initial_references 獲取對某些服務的初始物件參考(如 NameService)
  3. 將物件參考轉換為字元串,將字元串轉換為物件參考
  4. 將 ORB 連接到 servant(CORBA 物件實作的實例)以及斷開 ORB 與 servant 的連接
  5. 創建如下所示物件
  6. 在 DII 中發送多條訊息

可以使用 ORB 類別獲取對網路上任意位置實作的物件的參考。

應用程序或 applet 通過使用三個 init 方法之一將其自身初始化為 ORB,來存取 CORBA 環境。這三個方法中有兩個使用下表中所示的屬性(名稱與值的關聯)。

屬性名 屬性值
標準 Java CORBA 屬性:
org.omg.CORBA.ORBClass ORB 實作的類別名稱
org.omg.CORBA.ORBSingletonClass init() 返回的 ORB 的類別名稱

這些屬性允許“插入”不同供應商的 ORB 實作。

在創建 ORB 實例時,使用以下標準搜尋順序來定位 ORB 實作的類別名稱:

  1. 檢查 Applet 參數或應用程序字元串陣列(如果有)
  2. 檢查屬性參數(如果有)
  3. 檢查系統屬性
  4. 檢查位於 user.home 目錄中的 orb.properties 檔案(如果有)
  5. 檢查位於 java.home/lib 目錄中的 orb.properties 檔案(如果有)
  6. 依靠硬編碼 (hardcoded) 的預設行為(使用 Java IDL 實作)

注意,Java IDL 提供全功能 ORB 和單件 (Singleton) ORB 的預設實作。當沒有為 init 方法提供任何參數時,返回預設單件 ORB。當為 init 方法提供了參數但沒有指定 ORB 類別時,返回 Java IDL ORB 實作。

以下程式碼段創建了一個使用預設 ORB 單件初始化的 ORB 物件。此 ORB 有一個受限制的實作,以防止惡意 applet 執行任何創建 typecode 以外的操作。稱它為單件 ORB 是因為整個虛擬機器中只有一個實例。

    ORB orb = ORB.init();
 

以下程式碼片段創建用於某個應用程序的 ORB 物件。參數 args 表示提供給應用程序的 main 方法的參數。因為該屬性指定了 ORB 類別為 "SomeORBImplementation",所以將使用該 ORB 實作初始化新的 ORB。如果 p 為 null,並且參數沒有指定 ORB 類別,則使用預設 Java IDL 實作初始化新的 ORB。

    Properties p = new Properties();
    p.put("org.omg.CORBA.ORBClass", "SomeORBImplementation");
    ORB orb = ORB.init(args, p);
 

以下程式碼片段為作為第一個參數提供的 applet 創建 ORB 物件。如果給定 applet 沒有指定 ORB 類別,則將使用預設 Java IDL 實作初始化新的 ORB。

    ORB orb = ORB.init(myApplet, null);
 

可以在一個或多個 ORB 中初始化應用程序或 applet。ORB 初始化是進入 CORBA 環境的引導調用。

從以下版本開始:
JDK1.2

建構子摘要
ORB()
           
 
方法摘要
 void connect(Object obj)
          將給定 servant 物件(作為伺服器實作類別的實例的 Java 物件)連接到 ORB。
 TypeCode create_abstract_interface_tc(String id, String name)
          為 IDL 抽象介面創建一個 TypeCode 物件。
abstract  TypeCode create_alias_tc(String id, String name, TypeCode original_type)
          創建一個表示 IDL aliasTypeCode 物件 (typedef)。
abstract  Any create_any()
          創建一個 IDL Any 物件,初始化後該物件包含一個 kind 欄位被設置為 TCKind.tc_nullTypecode 物件。
abstract  TypeCode create_array_tc(int length, TypeCode element_type)
          創建一個表示 IDL arrayTypeCode 物件。
 DynAny create_basic_dyn_any(TypeCode type)
          已過時。 使用新的 DynAnyFactory API 代替
abstract  ContextList create_context_list()
          創建一個空的 ContextList 物件。
 DynAny create_dyn_any(Any value)
          已過時。 使用新的 DynAnyFactory API 代替
 DynArray create_dyn_array(TypeCode type)
          已過時。 使用新的 DynAnyFactory API 代替
 DynEnum create_dyn_enum(TypeCode type)
          已過時。 使用新的 DynAnyFactory API 代替
 DynSequence create_dyn_sequence(TypeCode type)
          已過時。 使用新的 DynAnyFactory API 代替
 DynStruct create_dyn_struct(TypeCode type)
          已過時。 使用新的 DynAnyFactory API 代替
 DynUnion create_dyn_union(TypeCode type)
          已過時。 使用新的 DynAnyFactory API 代替
abstract  TypeCode create_enum_tc(String id, String name, String[] members)
          創建一個表示 IDL enumTypeCode 物件。
abstract  Environment create_environment()
          創建一個 Environment 物件。
abstract  ExceptionList create_exception_list()
          創建一個空的 ExceptionList 物件。
abstract  TypeCode create_exception_tc(String id, String name, StructMember[] members)
          創建一個表示 IDL exceptionTypeCode 物件。
 TypeCode create_fixed_tc(short digits, short scale)
          為 IDL fixed 型別創建一個 TypeCode 物件。
abstract  TypeCode create_interface_tc(String id, String name)
          創建一個表示 IDL interfaceTypeCode 物件。
abstract  NVList create_list(int count)
          為指定數量的 NamedValue 物件分派具有(可能)足夠空間的 NVList
abstract  NamedValue create_named_value(String s, Any any, int flags)
          使用給定名稱、值和參數網要標誌創建一個 NamedValue 物件。
 TypeCode create_native_tc(String id, String name)
          為 IDL native 型別創建一個 TypeCode 物件。
 NVList create_operation_list(Object oper)
          創建一個 NVList,並使用給定 OperationDef 物件中所述操作的參數描述進行初始化。
abstract  OutputStream create_output_stream()
          創建一個新的 org.omg.CORBA.portable.OutputStream,在執行方法調用期間,可在該輸出串流中對 IDL 方法參數進行編組。
 Policy create_policy(int type, Any val)
          可以調用此方法創建特定型別的新策略物件實例,並且其型別具有指定的初始狀態。
abstract  TypeCode create_recursive_sequence_tc(int bound, int offset)
          已過時。 使用 create_recursive_tc 和 create_sequence_tc 的組合替代它
 TypeCode create_recursive_tc(String id)
          創建一個遞歸 TypeCode 物件,在創建包含遞歸的 TypeCodes 期間,該物件充當具體 TypeCode 的佔位符。
abstract  TypeCode create_sequence_tc(int bound, TypeCode element_type)
          創建一個表示 IDL sequenceTypeCode 物件。
abstract  TypeCode create_string_tc(int bound)
          創建一個表示有界 IDL stringTypeCode 物件。
abstract  TypeCode create_struct_tc(String id, String name, StructMember[] members)
          創建一個表示 IDL structTypeCode 物件。
abstract  TypeCode create_union_tc(String id, String name, TypeCode discriminator_type, UnionMember[] members)
          創建一個表示 IDL unionTypeCode 物件。
 TypeCode create_value_box_tc(String id, String name, TypeCode boxed_type)
          為 IDL value box 型別創建一個 TypeCode 物件。
 TypeCode create_value_tc(String id, String name, short type_modifier, TypeCode concrete_base, ValueMember[] members)
          為 IDL value 型別創建一個 TypeCode 物件。
abstract  TypeCode create_wstring_tc(int bound)
          創建一個表示有界 IDL wstring (wide string) 的 TypeCode 物件。
 void destroy()
          銷毀 ORB,以便可以回收其資源。
 void disconnect(Object obj)
          斷開給定 servant 物件與 ORB 的連接。
 Current get_current()
          已過時。 使用 resolve_initial_references
abstract  Context get_default_context()
          獲取預設 Context 物件。
abstract  Request get_next_response()
          獲取已接收到回應的下一個 Request 實例。
abstract  TypeCode get_primitive_tc(TCKind tcKind)
          檢索表示給定基本 IDL 型別的 TypeCode 物件。
 boolean get_service_information(short service_type, ServiceInformationHolder service_info)
          用來獲取有關受此 ORB 支持的 CORBA 資源和服務的資訊。
static ORB init()
          返回物件 ORB 單件。
static ORB init(Applet app, Properties props)
          為 applet 創建一個新的 ORB 實例。
static ORB init(String[] args, Properties props)
          為獨立的應用程序創建一個新的 ORB 實例。
abstract  String[] list_initial_services()
          返回最初可用 CORBA 物件參考(比如 "NameService" 和 "InterfaceRepository")的列表。
abstract  String object_to_string(Object obj)
          將給定 CORBA 物件參考轉換為字元串。
 void perform_work()
          如果該操作由主執行緒調用,則執行與實作有關的單元操作。
abstract  boolean poll_next_response()
          找出是否已經回應了延遲的(非同步)調用。
abstract  Object resolve_initial_references(String object_name)
          根據可用初始服務名稱集解析特定物件參考。
 void run()
          在 ORB 已完成關閉過程前(該過程始於某些執行緒調用 shutdown 時),此操作將一直阻塞當前執行緒。
abstract  void send_multiple_requests_deferred(Request[] req)
          非同步發送多個動態 (DII) 請求。
abstract  void send_multiple_requests_oneway(Request[] req)
          非同步發送多個動態 (DII) 請求,並且不期望任何回應。
protected abstract  void set_parameters(Applet app, Properties props)
          允許使用給定 applet 和參數初始化 ORB 實作。
protected abstract  void set_parameters(String[] args, Properties props)
          允許使用給定的參數和屬性初始化 ORB 實作。
 void shutdown(boolean wait_for_completion)
          指示關閉 ORB,這將導致關閉所有物件適配器,以準備銷毀。
abstract  Object string_to_object(String str)
          將方法 object_to_string 產生的字元串轉換回 CORBA 物件參考。
 boolean work_pending()
          如果 ORB 需要主執行緒來執行某些操作,則返回 true;如果 ORB 不需要主執行緒,則返回 false
 
從類別 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

建構子詳細資訊

ORB

public ORB()
方法詳細資訊

init

public static ORB init()
返回物件 ORB 單件。此方法總是返回相同的 ORB 實例,該實例是由 org.omg.CORBA.ORBSingletonClass 系統屬性所描述的類別的實例。

無參數的 init 方法主要用作 TypeCode 物件的處理器,Helper 類別使用該物件來實作 type 方法。還可以使用該方法來創建用於描述 union 標籤的 Any 物件(作為創建用於 unionTypeCode 物件的一部分)。

此方法並不適合由 applet 使用,如果在 applet 環境中調用此方法,則該方法返回的 ORB 是受限制的,即它只能用作 TypeCode 物件的處理器。該方法產生的任何 TypeCode 物件都可以在不受信任的 applet 之間安全地共享。

如果某一 ORB 是使用此方法從 applet 創建的,則將拋出系統異常(如果調用的是用來創建 TypeCode 物件的那些方法以外的方法)。

返回:
單件 ORB

init

public static ORB init(String[] args,
                       Properties props)
為獨立的應用程序創建一個新的 ORB 實例。此方法只能從應用程序調用,每次調用該方法都會返回一個新的全功能 ORB 物件。

參數:
args - 應用程序的 main 方法的命令行參數,可以為 null
props - 特定於應用程序的屬性,可以為 null
返回:
新創建的 ORB 實例

init

public static ORB init(Applet app,
                       Properties props)
為 applet 創建一個新的 ORB 實例。此方法只能從 applet 調用,每次調用該方法都會返回一個新的全功能 ORB 物件。

參數:
app - applet,可以為 null
props - 特定於 applet 的屬性,可以為 null
返回:
新創建的 ORB 實例

set_parameters

protected abstract void set_parameters(String[] args,
                                       Properties props)
允許使用給定的參數和屬性初始化 ORB 實作。此方法只能在應用程序中使用,由子類別 ORB 實作來實作,並由適當的 init 方法調用,以傳入其參數。

參數:
args - 應用程序的 main 方法的命令行參數,可以為 null
props - 特定於應用程序的屬性,可以為 null

set_parameters

protected abstract void set_parameters(Applet app,
                                       Properties props)
允許使用給定 applet 和參數初始化 ORB 實作。此方法只能在 applet 中使用,由子類別 ORB 實作來實作,並由適當的 init 方法調用,以傳入其參數。

參數:
app - applet,可以為 null
props - 特定於 applet 的屬性,可以為 null

connect

public void connect(Object obj)
將給定 servant 物件(作為伺服器實作類別的實例的 Java 物件)連接到 ORB。servant 類別必須擴展對應於伺服器所支持的介面的 ImplBase 類別。因此 servant 必須是一個 CORBA 物件參考,並且必須繼承自 org.omg.CORBA.Object。由使用者創建的 servant 可在調用 connect 方法之後開始接收遠端調用。如果將 servant 作為非本地物件上的 IDL 方法調用中的 IDL 參數傳遞,也就是說,如果對 servant 物件進行編組並將它發送到進程位址空間以外,則 servant 也可以自動隱式地連接到 ORB。

當 servant 物件已經連接到 ORB 時,調用 connect 方法沒有任何效果。

OMG 推薦使用可移植物件適配器 API 取代此方法。

參數:
obj - servant 物件參考

destroy

public void destroy()
銷毀 ORB,以便可以回收其資源。對已銷毀的 ORB 參考調用任何操作都將拋出 OBJECT_NOT_EXIST 異常。一旦已銷毀 ORB,使用相同的 ORBid 再次調用 init 將返回對新建 ORB 的參考。

如果對尚未關閉的 ORB 調用 destroy,則在銷毀該 ORB 之前將啟動關閉進程,並且該方法將一直阻塞到關閉 ORB 為止。
如果應用程序在當前正服務於某個調用的執行緒中調用 destroy,則將拋出 BAD_INV_ORDER 系統異常,並帶有 OMG 次要程式碼 (minor code) 3,因為阻塞將導致死鎖。

為獲取最大的可移植性並避免資源洩漏,應用程序應該總是在退出前對所有 ORB 實例調用 shutdowndestroy

拋出:
BAD_INV_ORDER - 如果當前執行緒正服務於某一調用

disconnect

public void disconnect(Object obj)
斷開給定 servant 物件與 ORB 的連接。在此方法返回之後,ORB 將拒絕對已斷開 servant 的傳入遠端請求,並將異常 org.omg.CORBA.OBJECT_NOT_EXIST 發送回遠端客戶端。因此,從遠端客戶端看來,該物件似乎已被銷毀。不過要注意的是,使用 servant 直接發佈的本地請求不通過 ORB,因此,這些請求將繼續由 servant 處理。

如果 servant 沒有連接到 ORB,則調用 disconnect 方法沒有任何效果。

OMG 推薦使用可移植物件適配器 API 取代此方法。

參數:
obj - 將與 ORB 斷開連接的 servant 物件

list_initial_services

public abstract String[] list_initial_services()
返回最初可用 CORBA 物件參考(比如 "NameService" 和 "InterfaceRepository")的列表。

返回:
String 物件陣列,這些物件表示此 ORB 中最初可用 CORBA 服務的物件參考

resolve_initial_references

public abstract Object resolve_initial_references(String object_name)
                                           throws InvalidName
根據可用初始服務名稱集解析特定物件參考。

參數:
object_name - 字元串形式的初始服務名稱
返回:
與給定名稱關聯的物件參考
拋出:
InvalidName - 如果給定名稱不與已知服務關聯

object_to_string

public abstract String object_to_string(Object obj)
將給定 CORBA 物件參考轉換為字元串。注意,此字元串的格式由 IIOP 預先定義,允許將不同 ORB 產生的字元串轉換回物件參考。

可以使用能夠操作 String 物件的任何方式存儲所得 String 物件或與它們進行通信。

參數:
obj - 將字元串化的物件參考
返回:
表示物件參考的字元串

string_to_object

public abstract Object string_to_object(String str)
將方法 object_to_string 產生的字元串轉換回 CORBA 物件參考。

參數:
str - 將轉換回物件參考的字元串。它必須是使用 object_to_string 方法將物件參考轉換所得到的字元串。
返回:
物件參考。

create_list

public abstract NVList create_list(int count)
為指定數量的 NamedValue 物件分派具有(可能)足夠空間的 NVList。注意,指定的大小只是一個有助於存儲分派的提示,並不表示列表的最大大小。

參數:
count - 要分派空間的 NamedValue 物件的建議數量
返回:
新創建的 NVList
另請參見:
NVList

create_operation_list

public NVList create_operation_list(Object oper)
創建一個 NVList,並使用給定 OperationDef 物件中所述操作的參數描述進行初始化。此 OperationDef 物件是從介面存儲資源庫 (Interface Repository) 中獲得的。所返回 NVList 物件中參數的順序與原始 IDL 操作定義中的順序相同,這使得能夠在動態調用請求中使用該列表。

參數:
oper - 將用來創建列表的 OperationDef 物件
返回:
新創建的 NVList 物件,它包含對給定 OperationDef 物件中所述方法的參數描述
另請參見:
NVList

create_named_value

public abstract NamedValue create_named_value(String s,
                                              Any any,
                                              int flags)
使用給定名稱、值和參數網要標誌創建一個 NamedValue 物件。

NamedValue 物件可用作 (1) 參數或返回值,或者 (2) 上下文屬性。它可以單獨使用,也可以作為 NVList 物件中的一個元素使用。

參數:
s - NamedValue 物件的名稱
any - 將插入 NamedValue 物件的 Any
flags - NamedValue 的參數網要標誌:ARG_IN.valueARG_OUT.valueARG_INOUT.value 之一。
返回:
新創建的 NamedValue 物件
另請參見:
NamedValue

create_exception_list

public abstract ExceptionList create_exception_list()
創建一個空的 ExceptionList 物件。

返回:
新創建的 ExceptionList 物件

create_context_list

public abstract ContextList create_context_list()
創建一個空的 ContextList 物件。

返回:
新創建的 ContextList 物件
另請參見:
ContextList, Context

get_default_context

public abstract Context get_default_context()
獲取預設 Context 物件。

返回:
預設 Context 物件
另請參見:
Context

create_environment

public abstract Environment create_environment()
創建一個 Environment 物件。

返回:
新創建的 Environment 物件
另請參見:
Environment

create_output_stream

public abstract OutputStream create_output_stream()
創建一個新的 org.omg.CORBA.portable.OutputStream,在執行方法調用期間,可在該輸出串流中對 IDL 方法參數進行編組。

返回:
新創建的 org.omg.CORBA.portable.OutputStream 物件

send_multiple_requests_oneway

public abstract void send_multiple_requests_oneway(Request[] req)
非同步發送多個動態 (DII) 請求,並且不期望任何回應。注意,不保證單向調用可到達伺服器。

參數:
req - 請求物件陣列

send_multiple_requests_deferred

public abstract void send_multiple_requests_deferred(Request[] req)
非同步發送多個動態 (DII) 請求。

參數:
req - Request 物件陣列

poll_next_response

public abstract boolean poll_next_response()
找出是否已經回應了延遲的(非同步)調用。

返回:
如果獲得回應,則返回 true;否則返回 false

get_next_response

public abstract Request get_next_response()
                                   throws WrongTransaction
獲取已接收到回應的下一個 Request 實例。

返回:
已獲得回應的下一個 Request 物件
拋出:
WrongTransaction - 如果在不同於發送原始請求的事務處理域中調用 get_next_response 方法。有關詳細資訊,請參閱 OMG 事務服務 (Transaction Service) 規範。

get_primitive_tc

public abstract TypeCode get_primitive_tc(TCKind tcKind)
檢索表示給定基本 IDL 型別的 TypeCode 物件。

參數:
tcKind - 對應於所需基本型別的 TCKind 實例
返回:
所請求的 TypeCode 物件

create_struct_tc

public abstract TypeCode create_struct_tc(String id,
                                          String name,
                                          StructMember[] members)
創建一個表示 IDL structTypeCode 物件。使用給定 id、名稱和成員初始化該 TypeCode 物件。

參數:
id - struct 的存儲資源庫 id
name - struct 的名稱
members - 描述 struct 成員的陣列
返回:
描述 IDL struct 的新建 TypeCode 物件

create_union_tc

public abstract TypeCode create_union_tc(String id,
                                         String name,
                                         TypeCode discriminator_type,
                                         UnionMember[] members)
創建一個表示 IDL unionTypeCode 物件。使用給定 id、名稱、鑒別符型別和成員初始化該 TypeCode 物件。

參數:
id - union 的存儲資源庫 id
name - union 的名稱
discriminator_type - union 鑒別符的型別
members - 描述 union 成員的陣列
返回:
描述 IDL union 的新建 TypeCode 物件

create_enum_tc

public abstract TypeCode create_enum_tc(String id,
                                        String name,
                                        String[] members)
創建一個表示 IDL enumTypeCode 物件。使用給定 id、名稱和成員初始化該 TypeCode 物件。

參數:
id - enum 的存儲資源庫 id
name - enum 的名稱
members - 描述 enum 成員的陣列
返回:
描述 IDL enum 的新建 TypeCode 物件

create_alias_tc

public abstract TypeCode create_alias_tc(String id,
                                         String name,
                                         TypeCode original_type)
創建一個表示 IDL aliasTypeCode 物件 (typedef)。使用給定 id、名稱和原始型別初始化該 TypeCode 物件。

參數:
id - 別名的存儲資源庫 id
name - 別名的名稱
original_type - 描述原始型別(該值是其別名)的 TypeCode 物件
返回:
描述 IDL alias 的新建 TypeCode 物件

create_exception_tc

public abstract TypeCode create_exception_tc(String id,
                                             String name,
                                             StructMember[] members)
創建一個表示 IDL exceptionTypeCode 物件。使用給定 id、名稱和成員初始化該 TypeCode 物件。

參數:
id - exception 的存儲資源庫 id
name - exception 的名稱
members - 描述 exception 成員的陣列
返回:
描述 IDL exception 的新建 TypeCode 物件

create_interface_tc

public abstract TypeCode create_interface_tc(String id,
                                             String name)
創建一個表示 IDL interfaceTypeCode 物件。使用給定 id 和名稱初始化該 TypeCode 物件。

參數:
id - 介面的存儲資源庫 id
name - 介面的名稱
返回:
描述 IDL interface 的新建 TypeCode 物件

create_string_tc

public abstract TypeCode create_string_tc(int bound)
創建一個表示有界 IDL stringTypeCode 物件。使用給定 bound 初始化該 TypeCode 物件,bound 表示字元串的最大長度。0 指示此型別程式碼描述的字元串是無界的。

參數:
bound - string 的範圍,不能為負
返回:
描述有界 IDL string 的新建 TypeCode 物件
拋出:
BAD_PARAM - 如果 bound 為負值

create_wstring_tc

public abstract TypeCode create_wstring_tc(int bound)
創建一個表示有界 IDL wstring (wide string) 的 TypeCode 物件。使用給定 bound 初始化該 TypeCode 物件,bound 表示寬字元串的最大長度。0 指示此型別程式碼描述的字元串是無界的。

參數:
bound - wstring 的範圍,不能為負
返回:
描述有界 IDL wstring 的新建 TypeCode 物件
拋出:
BAD_PARAM - 如果 bound 為負值

create_sequence_tc

public abstract TypeCode create_sequence_tc(int bound,
                                            TypeCode element_type)
創建一個表示 IDL sequenceTypeCode 物件。使用給定 bound 和元素型別初始化該 TypeCode 物件。

參數:
bound - sequence 的範圍,如果無界,則該值為 0
element_type - 描述 sequence 中所包含元素的 TypeCode 物件
返回:
描述 IDL sequence 的新建 TypeCode 物件

create_recursive_sequence_tc

@Deprecated
public abstract TypeCode create_recursive_sequence_tc(int bound,
                                                                 int offset)
已過時。 使用 create_recursive_tc 和 create_sequence_tc 的組合替代它

創建一個表示遞歸 IDL sequenceTypeCode 物件。

對於以下程式碼片段中的 IDL struct Node,用來創建其序列的 offset 參數將是 1:

    Struct Node {
        long value;
        Sequence <Node> subnodes;
    };
 

參數:
bound - 序列範圍,如果無界,則該值為 0
offset - 描述此序列元素的封閉 TypeCode 物件的索引
返回:
描述遞歸序列的 TypeCode 物件
另請參見:
create_recursive_tc, create_sequence_tc

create_array_tc

public abstract TypeCode create_array_tc(int length,
                                         TypeCode element_type)
創建一個表示 IDL arrayTypeCode 物件。使用給定長度和元素型別初始化該 TypeCode 物件。

參數:
length - array 的長度
element_type - 描述 array 中所包含元素的型別的 TypeCode 物件
返回:
描述 IDL array 的新建 TypeCode 物件

create_native_tc

public TypeCode create_native_tc(String id,
                                 String name)
為 IDL native 型別創建一個 TypeCode 物件。

參數:
id - native 型別的邏輯 id。
name - native 型別的名稱。
返回:
所請求的 TypeCode。

create_abstract_interface_tc

public TypeCode create_abstract_interface_tc(String id,
                                             String name)
為 IDL 抽象介面創建一個 TypeCode 物件。

參數:
id - 抽象介面型別的邏輯 id。
name - 抽象介面型別的名稱。
返回:
所請求的 TypeCode。

create_fixed_tc

public TypeCode create_fixed_tc(short digits,
                                short scale)
為 IDL fixed 型別創建一個 TypeCode 物件。

參數:
digits - 指定數字中總的小數位數,必須在從 1 到 31 的閉區間內。
scale - 指定小數點的位置。
返回:
所請求的 TypeCode。

create_value_tc

public TypeCode create_value_tc(String id,
                                String name,
                                short type_modifier,
                                TypeCode concrete_base,
                                ValueMember[] members)
為 IDL value 型別創建一個 TypeCode 物件。concrete_base 參數是用於 valuetype(將為其創建 TypeCode)直接具體 valuetype 基的 TypeCode。如果 valuetype 沒有 concrete 基,則該值為 null。

參數:
id - 值型別的邏輯 id。
name - 值型別的名稱。
type_modifier - 以下值型別修飾符常數之一:VM_NONE、VM_CUSTOM、VM_ABSTRACT 或 VM_TRUNCATABLE
concrete_base - 描述具體 valuetype 基的 TypeCode 物件
members - 套件含 value 型別成員的陣列
返回:
所請求的 TypeCode

create_recursive_tc

public TypeCode create_recursive_tc(String id)
創建一個遞歸 TypeCode 物件,在創建包含遞歸的 TypeCodes 期間,該物件充當具體 TypeCode 的佔位符。id 參數指定型別(遞歸 TypeCode 將充當該型別的佔位符)的存儲資源庫 id。一旦將遞歸 TypeCode 正確地嵌入到對應於指定存儲資源庫 id 的封閉 TypeCode,該 TypeCode 的作用將與普通 TypeCode 一樣。如果在將遞歸 TypeCode 嵌入封閉 TypeCode 之前對該 TypeCode 執行調用操作,則將導致 BAD_TYPECODE 異常。

例如,以下 IDL 型別宣告中包含遞歸:

    Struct Node {
        Sequence<Node> subnodes;
    };
 

要為 struct Node 創建 TypeCode,應調用 TypeCode 創建操作,如下所示:

 String nodeID = "IDL:Node:1.0";
 TypeCode recursiveSeqTC = orb.create_sequence_tc(0, orb.create_recursive_tc(nodeID));
 StructMember[] members = { new StructMember("subnodes", recursiveSeqTC, null) };
 TypeCode structNodeTC = orb.create_struct_tc(nodeID, "Node", members);
 

還要注意的是,以下是一個非法 IDL 型別宣告:

    Struct Node {
        Node next;
    };
 

遞歸型別只能出現在可以為空的序列中。當在 Any 陣列中傳輸 struct 資料時,可以通過這種方式避免編碼問題。

參數:
id - 所參考型別的邏輯 id
返回:
所請求的 TypeCode

create_value_box_tc

public TypeCode create_value_box_tc(String id,
                                    String name,
                                    TypeCode boxed_type)
為 IDL value box 型別創建一個 TypeCode 物件。

參數:
id - 值型別的邏輯 id
name - 值型別的名稱
boxed_type - 該型別的 TypeCode
返回:
所請求的 TypeCode

create_any

public abstract Any create_any()
創建一個 IDL Any 物件,初始化後該物件包含一個 kind 欄位被設置為 TCKind.tc_nullTypecode 物件。

返回:
新創建的 Any 物件

get_current

@Deprecated
public Current get_current()
已過時。 使用 resolve_initial_references

檢索 Current 物件。Current 介面用於管理由服務使用的特定於執行緒的資訊(比如事務處理和安全)。

返回:
新創建的 Current 物件
另請參見:
CORBA 套件中有關未實作特性的註釋

run

public void run()
在 ORB 已完成關閉過程前(該過程始於某些執行緒調用 shutdown 時),此操作將一直阻塞當前執行緒。此方法可由關閉 ORB 時獲取全部通知的多個執行緒使用。


shutdown

public void shutdown(boolean wait_for_completion)
指示關閉 ORB,這將導致關閉所有物件適配器,以準備銷毀。
如果 wait_for_completion 參數為 true,則在所有 ORB 處理(包括當前執行請求、物件釋放和其他物件適配器操作的處理)已完成之前,此操作一直受阻塞。如果應用程序在當前正服務於某個調用的執行緒中執行該操作,則將拋出 BAD_INV_ORDER 系統異常,並帶有 OMG 次要程式碼 3,因為阻塞將導致死鎖。
如果 wait_for_completion 參數為 FALSE,則可能在返回時還沒完成關閉。

當 ORB 處於關閉過程中時,ORB 操作照常,繼續為傳入和傳出的請求服務,直到所有請求完成為止。一旦 ORB 已關閉,則只能對該 ORB(或從中獲得的任何物件參考)調用物件參考管理操作。應用程序還可以對 ORB 本身調用 destroy 操作。調用任何其他操作將導致拋出 BAD_INV_ORDER 系統異常,並帶有 OMG 次要程式碼 4。

ORB.run 方法將在調用 shutdown 之後返回。

參數:
wait_for_completion - 如果調用在完成關閉之前應一直受阻塞,則該參數為 true;如果該調用應立即返回,則該參數為 false
拋出:
BAD_INV_ORDER - 如果當前執行緒正服務於某一調用。

work_pending

public boolean work_pending()
如果 ORB 需要主執行緒來執行某些操作,則返回 true;如果 ORB 不需要主執行緒,則返回 false

返回:
如果有些操作正處於掛起狀態,則返回 true,這意味著 ORB 需要主執行緒來執行某些操作;如果沒有操作處於掛起狀態,從而 ORB 不需要主執行緒,則返回 false

perform_work

public void perform_work()
如果該操作由主執行緒調用,則執行與實作有關的單元操作。否則不執行任何操作。可以組合使用 work_pendingperform_work 方法來實作簡單的輪詢循環,該循環在 ORB 和其他活動中多路傳輸主執行緒。


get_service_information

public boolean get_service_information(short service_type,
                                       ServiceInformationHolder service_info)
用來獲取有關受此 ORB 支持的 CORBA 資源和服務的資訊。將為其請求資訊的服務型別以 in 參數 service_type 的形式傳入,該參數值由 CORBA 模組中的常數定義。如果服務資訊可用於該型別,則在 out 參數 service_info 中返回它,並且該操作將返回 true 值。如果對於所請求服務型別沒有資訊可用,則該操作返回 false(即此 ORB 不支持該服務)。

參數:
service_type - 一個 short 值,指示將為其請求資訊的服務型別
service_info - 一個 ServiceInformationHolder 物件,該物件將保存此方法產生的 ServiceInformation 物件
返回:
如果服務資訊可用於 service_type,則返回 true;如果對於所請求的服務型別沒有可用資訊,則返回 false
另請參見:
CORBA 套件中有關未實作特性的註釋

create_dyn_any

@Deprecated
public DynAny create_dyn_any(Any value)
已過時。 使用新的 DynAnyFactory API 代替

根據給定 Any 物件創建一個新的 DynAny 物件。

參數:
value - 據以創建新 DynAny 物件的 Any 物件
返回:
根據給定 Any 物件創建的新 DynAny 物件
另請參見:
CORBA 套件中有關未實作特性的註釋

create_basic_dyn_any

@Deprecated
public DynAny create_basic_dyn_any(TypeCode type)
                            throws InconsistentTypeCode
已過時。 使用新的 DynAnyFactory API 代替

根據給定 TypeCode 物件創建基本 DynAny 物件。

參數:
type - 據以創建新 DynAny 物件的 TypeCode 物件
返回:
根據給定 TypeCode 物件創建新的 DynAny 物件
拋出:
InconsistentTypeCode - 如果給定 TypeCode 物件與操作不一致。
另請參見:
CORBA 套件中有關未實作特性的註釋

create_dyn_struct

@Deprecated
public DynStruct create_dyn_struct(TypeCode type)
                            throws InconsistentTypeCode
已過時。 使用新的 DynAnyFactory API 代替

根據給定 TypeCode 物件創建新的 DynStruct 物件。

參數:
type - 據以創建新的 DynStruct 物件的 TypeCode 物件
返回:
根據給定 TypeCode 物件創建新的 DynStruct 物件
拋出:
InconsistentTypeCode - 如果給定 TypeCode 物件與操作不一致。
另請參見:
CORBA 套件中有關未實作特性的註釋

create_dyn_sequence

@Deprecated
public DynSequence create_dyn_sequence(TypeCode type)
                                throws InconsistentTypeCode
已過時。 使用新的 DynAnyFactory API 代替

根據給定 TypeCode 物件創建新的 DynSequence 物件。

參數:
type - 據以創建新 DynSequence 物件的 TypeCode 物件
返回:
根據給定 TypeCode 物件創建新的 DynSequence 物件
拋出:
InconsistentTypeCode - 如果給定 TypeCode 物件與操作不一致。
另請參見:
CORBA 套件中有關未實作特性的註釋

create_dyn_array

@Deprecated
public DynArray create_dyn_array(TypeCode type)
                          throws InconsistentTypeCode
已過時。 使用新的 DynAnyFactory API 代替

根據給定 TypeCode 物件創建新的 DynArray 物件。

參數:
type - 據以創建新 DynArray 物件的 TypeCode 物件
返回:
根據給定 TypeCode 物件創建新的 DynArray 物件
拋出:
InconsistentTypeCode - 如果給定 TypeCode 物件與操作不一致。
另請參見:
CORBA 套件中有關未實作特性的註釋

create_dyn_union

@Deprecated
public DynUnion create_dyn_union(TypeCode type)
                          throws InconsistentTypeCode
已過時。 使用新的 DynAnyFactory API 代替

根據給定 TypeCode 物件創建新的 DynUnion 物件。

參數:
type - 據以創建新 DynUnion 物件的 TypeCode 物件
返回:
根據給定 TypeCode 物件創建新的 DynUnion 物件
拋出:
InconsistentTypeCode - 如果給定 TypeCode 物件與操作不一致。
另請參見:
CORBA 套件中有關未實作特性的註釋

create_dyn_enum

@Deprecated
public DynEnum create_dyn_enum(TypeCode type)
                        throws InconsistentTypeCode
已過時。 使用新的 DynAnyFactory API 代替

根據給定 TypeCode 物件創建新的 DynEnum 物件。

參數:
type - 據以創建新 DynEnum 物件的 TypeCode 物件
返回:
根據給定 TypeCode 物件創建新的 DynEnum 物件
拋出:
InconsistentTypeCode - 如果給定 TypeCode 物件與操作不一致。
另請參見:
CORBA 套件中有關未實作特性的註釋

create_policy

public Policy create_policy(int type,
                            Any val)
                     throws PolicyError
可以調用此方法創建特定型別的新策略物件實例,並且其型別具有指定的初始狀態。如果 create_policy 因為不能解釋所請求的型別和策略內容而無法實例化新的 Policy 物件,則它將引髮帶有恰當原因的 PolicyError 異常。

參數:
type - 要創建的策略物件的 PolicyType
val - 將用來設置被創建的 Policy 物件初始狀態的值
返回:
對新建 Policy 物件的參考,該物件的型別由 type 參數指定,並被初始化為 val 參數指定的狀態
拋出:
org.omg.CORBA.PolicyError - 當所請求的策略不受支持,或所請求的策略初始狀態不受支持時。
PolicyError

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

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