org.omg.PortableServer

基本介紹

  • 外文名:org.omg.PortableServer
  • 類型:軟體包
  • 包規範:Java 2 平台
  • 相關文檔:Java IDL 主頁
軟體包 org.omg.PortableServer 的描述,包規範,接口摘要,類摘要,異常摘要,與 POA 相關的接口,操作類,Helper 類,POA 類,異常,相關文檔,代碼示例,

軟體包 org.omg.PortableServer 的描述

提供一些類和接口,用來生成跨多個供應商 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 2 平台、標準版 v.1.4 遵守的官方 OMG 規範的受支持部分的明確列表,請參閱 Official Specifications for CORBA support in J2SE 1.4。

接口摘要


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。

與 POA 相關的接口

PortableServer 模組定義以下與 POA 相關的接口:
POA
POAManager
ServantManager
ServantActivator
ServantLocator
AdapterActivator
ThreadPolicy
LifespanPolicy
IdUniquenessPolicy
IdAssignmentPolicy
ImplicitActivationPolicy
ServantRetentionPolicy
RequestProcessingPolicy
Current
此外,POA 還定義 Servant 本機類型。

操作類

上文列出的每個接口都有一個關聯的 Operations 接口。Operations 接口由 idlj 編譯器生成,其中包含一些方法簽名,用於在與其關聯的接口中定義的方法。Operations 接口可以通過客戶端和伺服器訪問,而其關聯的接口只能通過客戶端調用。
值類
以後綴 PolicyValue 結尾的類提供了 create_POA 調用所使用的值,該調用可設定 POA 的策略。參見以下用來示範的樣本代碼。PolicyValue 檔案包括以下內容:
IdAssignmentPolicyValue
IdUniquenessPolicyValue
ImplicitActivationPolicyValue
LifespanPolicyValue
RequestProcessingPolicyValue
ServantRetentionPolicyValue
ThreadPolicyValue

Helper 類

Helper 類是為 OMG IDL 接口中所有用戶定義類型生成的,提供操作這些類型所需的靜態方法。Helper 類中只有一種供應用程式員使用的方法。narrow 方法。只有 IDL 接口所映射的 Java 接口才有包含 narrow 方法的 helper 類,因此在 PortableServer 包中,只有以下類才具有 narrow 方法:
ForwardRequestHelper
ServantActivatorHelper
ServantLocatorHelper

POA 類

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 管理器。
org.omg.PortableServer.ServantLocatorPackage 包
此包提供一個 CookieHolder 類,將 Cookie 類型作為 out 參數傳遞。CookieHolder 類與其他基本類型的 holder 類完全一樣。

相關文檔

有關 Java IDL 概述,請參見:
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 );
}
}
從以下版本開始:
1.4

相關詞條

熱門詞條

聯絡我們