|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
| 上一個軟體套件 下一個軟體套件 | 框架 無框架 | |||||||||
請參見:
描述
| 介面摘要 | |
|---|---|
| AdapterActivator | 一個適配器啟動器,它提供具有隨需創建子 POA 功能的 POA。 |
| AdapterActivatorOperations | 一個適配器啟動器,它提供具有隨需創建子 POA 功能的 POA。 |
| Current | 從 CORBA::Current 派生的 PortableServer::Current 介面,它提供一些方法實作,這些實作能夠存取調用方法的物件的身份。 |
| CurrentOperations | 從 CORBA::Current 中派生的 PortableServer::Current 介面,它提供一些能夠存取調用方法的物件身份的方法實作。 |
| ID_ASSIGNMENT_POLICY_ID | org/omg/PortableServer/ID_ASSIGNMENT_POLICY_ID.java。 |
| ID_UNIQUENESS_POLICY_ID | org/omg/PortableServer/ID_UNIQUENESS_POLICY_ID.java。 |
| IdAssignmentPolicy | IdAssignmentPolicy 指定創建的 POA 中的 Object Id 是由應用程序還是由 ORB 產生的。 |
| IdAssignmentPolicyOperations | IdAssignmentPolicy 指定創建的 POA 中的 Object Id 是由應用程序還是由 ORB 產生的。 |
| IdUniquenessPolicy | IdUniquenessPolicy 指定已創建的 POA 中啟動的 servant 是否必須具有唯一的物件身份。 |
| IdUniquenessPolicyOperations | IdUniquenessPolicy 指定已創建的 POA 中啟動的 servant 是否必須具有唯一的物件身份。 |
| IMPLICIT_ACTIVATION_POLICY_ID | org/omg/PortableServer/IMPLICIT_ACTIVATION_POLICY_ID.java。 |
| ImplicitActivationPolicy | 此策略指定已創建的 POA 中是否支持隱式啟動 servant。 |
| ImplicitActivationPolicyOperations | 此策略指定已創建的 POA 中是否支持隱式啟動 servant。 |
| LIFESPAN_POLICY_ID | org/omg/PortableServer/LIFESPAN_POLICY_ID.java。 |
| LifespanPolicy | LifespanPolicy 指定已創建 POA 中實作的物件的生存期。 |
| LifespanPolicyOperations | LifespanPolicy 指定已創建 POA 中實作的物件的生存期。 |
| POA | POA 物件管理物件集合的實作。 |
| POAManager | 每個 POA 物件都有一個關聯的 POAManager 物件。 |
| POAManagerOperations | 每個 POA 物件具有一個關聯的 POAManager 物件。 |
| POAOperations | POA 物件管理物件集合的實作。 |
| REQUEST_PROCESSING_POLICY_ID | org/omg/PortableServer/REQUEST_PROCESSING_POLICY_ID.java。 |
| RequestProcessingPolicy | 此策略指定已創建的 POA 處理請求的方式。 |
| RequestProcessingPolicyOperations | 此策略指定已創建的 POA 處理請求的方式。 |
| SERVANT_RETENTION_POLICY_ID | org/omg/PortableServer/SERVANT_RETENTION_POLICY_ID.java。 |
| ServantActivator | POA 具有 RETAIN 策略時使用 ServantActivator 這種 servant 管理器。 |
| ServantActivatorOperations | POA 具有 RETAIN 策略時使用 ServantActivator 這種 servant 管理器。 |
| ServantLocator | 當 POA 具有 NON_RETAIN 策略時,使用 ServantLocator 這種 servant 管理器。 |
| ServantLocatorOperations | 當 POA 具有 NON_RETAIN 策略時,使用 ServantLocator 這種 servant 管理器。 |
| ServantManager | servant 管理器提供一個 POA,該 POA 在接受以非啟動的物件為目標的請求時能夠根據需要啟動物件。 |
| ServantManagerOperations | servant 管理器提供一個 POA,該 POA 在接受以非啟動的物件為目標的請求時能夠根據需要啟動物件。 |
| ServantRetentionPolicy | 此策略指定已創建的 POA 是否在 Active Object Map 中保留啟動的 servant。 |
| ServantRetentionPolicyOperations | 此策略指定已創建的 POA 是否在 Active Object Map 中保留啟動的 servant。 |
| THREAD_POLICY_ID | org/omg/PortableServer/THREAD_POLICY_ID.java。 |
| ThreadPolicy | ThreadPolicy 指定已創建的 POA 所使用的執行緒模型 (threading model)。 |
| ThreadPolicyOperations | ThreadPolicy 指定與已創建的 POA 一起使用的執行緒模型 (threading model)。 |
| 類別摘要 | |
|---|---|
| _ServantActivatorStub | 當 POA 具有 RETAIN 策略時,它使用 ServantActivator 這種 servant 管理器。 |
| _ServantLocatorStub | POA 具有 NON_RETAIN 策略時將使用 ServantLocator 這種 servant 管理器。 |
| CurrentHelper | 從 CORBA::Current 派生的 PortableServer::Current 介面,它提供一些方法實作,這些實作能夠存取調用方法的物件的身份。 |
| DynamicImplementation | 允許動態處理物件調用。 |
| ForwardRequestHelper | org/omg/PortableServer/ForwardRequestHelper.java。 |
| IdAssignmentPolicyValue | IdAssignmentPolicyValue 可以具有以下值。 |
| IdUniquenessPolicyValue | IdUniquenessPolicyValue 可以具有以下值。 |
| ImplicitActivationPolicyValue | ImplicitActivationPolicyValue 具有以下語義。 |
| LifespanPolicyValue | LifespanPolicyValue 可以具有以下值。 |
| POAHelper | POA 物件管理物件集合的實作。 |
| RequestProcessingPolicyValue | RequestProcessingPolicyValue 可以具有以下值。 |
| Servant | 定義本機 Servant 型別。 |
| ServantActivatorHelper | POA 具有 RETAIN 策略時使用 ServantActivator 這種 servant 管理器。 |
| ServantActivatorPOA | POA 具有 RETAIN 策略時使用 ServantActivator 這種 servant 管理器。 |
| ServantLocatorHelper | POA 具有 NON_RETAIN 策略時使用 ServantLocator 這種 servant 管理器。 |
| ServantLocatorPOA | POA 具有 NON_RETAIN 策略時使用 ServantLocator 這種 servant 管理器。 |
| ServantRetentionPolicyValue | ServantRetentionPolicyValue 可以具有以下值。 |
| ThreadPolicyValue | ThreadPolicyValue 可以具有以下值。 |
| 異常摘要 | |
|---|---|
| ForwardRequest | org/omg/PortableServer/ForwardRequest.java。 |
提供一些類別和介面,用來產生跨多個供應商 ORB 的可移植應用程序的伺服器端。
在 Java 中,基於可移植物件適配器(Portable Object Adaptor,POA)的動態框架介面(Dynamic Skeleton Interface,DSI)servant 繼承自標準 DynamicImplementation 類別,而該類別繼承自 Servant 類別。本機 Servant 型別由 POA 的 PortableServer 模組定義。在 Java 中,Servant 型別被映射到 Java org.omg.PortableServer.Servant 類別。它充當所有 POA servant 實作的基礎類別,提供許多可由應用開發人員調用的方法,以及可由 POA 本身調用(也可由使用者覆寫)以控制 servant 行為各方面的方法。
有關 Java[tm] Platform, Standard Edition 6 遵守的官方 OMG 規範的受支持部分的明確列表,請參閱 Official Specifications for CORBA support in Java[tm] SE 6。
PortableServer 模組定義以下與 POA 相關的介面:
此外,POA 還定義 Servant 本機型別。
上文列出的每個介面都有一個關聯的 Operations 介面。Operations 介面由 idlj 編譯器產生,其中包含一些方法簽章,用於在與其關聯的介面中定義的方法。Operations 介面可以通過客戶端和伺服器存取,而其關聯的介面只能通過客戶端調用。
PolicyValue 結尾的類別提供了 create_POA 調用所使用的值,該調用可設置 POA 的策略。參見以下用來示範的樣本程式碼。PolicyValue 檔案包括以下內容:
IdAssignmentPolicyValue
IdUniquenessPolicyValue
ImplicitActivationPolicyValue
LifespanPolicyValue
RequestProcessingPolicyValue
ServantRetentionPolicyValue
ThreadPolicyValue
Helper 類別是為 OMG IDL 介面中所有使用者定義型別產生的,提供操作這些型別所需的靜態方法。Helper 類別中只有一種供應用開發人員使用的方法。narrow 方法。只有 IDL 介面所映射的 Java 介面才有包含 narrow 方法的 helper 類別,因此在 PortableServer 套件中,只有以下類別才具有 narrow 方法:
ForwardRequestHelper
ServantActivatorHelper
ServantLocatorHelper
POA 類別用於實作 ServantActivator 或 ServantLocator。
ForwardRequest 異常指示 ORB 負責將當前請求和後續 ForwardRequest 請求傳遞給異常的 forward_reference 成員所表示的物件。
PortableServer 執行的大部分操作對使用者是透明的。因此開發人員將只能使用一小部分上述介面。剩餘的介面將由 ORB 實作提供。應用開發人員所需的介面如下:
AdapterActivator
適配器啟動器與 POA 關聯。適配器啟動器提供具有隨需創建子 POA 功能的 POA。產生這一需求可能是接受指定子 POA(或其中一個子 POA)的請求所帶來的副作用,調用 find_POA 時將 activate 參數值設置為 TRUE 也需要創建子 POA。創建所有所需 POA 的應用伺服器在剛開始執行時不需要使用或提供適配器啟動器;只有在請求處理期間需要創建 POA 時才有必要這樣做。
ServantLocator
當 POA 具有 NON_RETAIN 策略時,使用 ServantLocator 這種 servant 管理器。
ServantActivator
當 POA 具有 RETAIN 策略時,使用 ServantActivator 這種 servant 管理器。
此套件提供一個 CookieHolder 類別,將 Cookie 型別作為 out 參數傳遞。CookieHolder 類別與其他基本型別的 holder 類別完全一樣。
有關 Java IDL 概觀,請參見:
import javax.naming.InitialContext;
import javax.naming.Context;
import javax.rmi.PortableRemoteObject ;
import com.sun.corba.se.impl.poa.POAORB;
import org.omg.PortableServer.*;
import java.util.*;
import org.omg.CORBA.*;
import javax.rmi.CORBA.Stub;
import javax.rmi.CORBA.Util;
public class HelloServer {
public HelloServer(String[] args) {
try {
Properties p = System.getProperties();
// p.put("org.omg.CORBA.ORBClass", "com.sun.corba.ee.internal.POA.POAORB");
ORB orb = ORB.init( args, p );
POA rootPOA = (POA)orb.resolve_initial_references("RootPOA");
Policy[] tpolicy = new Policy[3];
tpolicy[0] = rootPOA.create_lifespan_policy(
LifespanPolicyValue.TRANSIENT );
tpolicy[1] = rootPOA.create_request_processing_policy(
RequestProcessingPolicyValue.USE_ACTIVE_OBJECT_MAP_ONLY );
tpolicy[2] = rootPOA.create_servant_retention_policy(
ServantRetentionPolicyValue.RETAIN);
POA tpoa = rootPOA.create_POA("MyTransientPOA", null, tpolicy);
String ObjectId = "MyObjectId";
byte[] oid = ObjectId.getBytes();
org.omg.CORBA.Object obj = tpoa.create_reference_with_id(oid,
new _HelloImpl_Tie()._all_interfaces(tpoa, oid)[0]);
HelloInterface helloRef = (HelloInterface)PortableRemoteObject.narrow(
obj, HelloInterface.class );
Context initialNamingContext = new InitialContext();
initialNamingContext.rebind("HelloService", helloRef);
System.out.println("Hello Server: Ready...");
orb.run();
} catch (Exception e) {
System.out.println("Trouble:" + e);
e.printStackTrace();
}
}
public static void main(String args[]) {
new HelloServer( args );
}
}
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
| 上一個軟體套件 下一個軟體套件 | 框架 無框架 | |||||||||
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。