JavaTM 2 Platform
Standard Ed. 6

軟體套件 org.omg.PortableServer

提供一些類別和介面,用來產生跨多個供應商 ORB 的可移植應用程序的伺服器端。

請參見:
          描述

介面摘要
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。
 

軟體套件 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[tm] Platform, Standard Edition 6 遵守的官方 OMG 規範的受支持部分的明確列表,請參閱 Official Specifications for CORBA support in Java[tm] SE 6

與 POA 相關的介面

PortableServer 模組定義以下與 POA 相關的介面:

此外,POA 還定義 Servant 本機型別。

操作類別

上文列出的每個介面都有一個關聯的 Operations 介面。Operations 介面由 idlj 編譯器產生,其中包含一些方法簽章,用於在與其關聯的介面中定義的方法。Operations 介面可以通過客戶端和伺服器存取,而其關聯的介面只能通過客戶端調用。

值類別

以後綴 PolicyValue 結尾的類別提供了 create_POA 調用所使用的值,該調用可設置 POA 的策略。參見以下用來示範的樣本程式碼PolicyValue 檔案包括以下內容:

Helper 類別

Helper 類別是為 OMG IDL 介面中所有使用者定義型別產生的,提供操作這些型別所需的靜態方法。Helper 類別中只有一種供應用開發人員使用的方法。narrow 方法。只有 IDL 介面所映射的 Java 介面才有包含 narrow 方法的 helper 類別,因此在 PortableServer 套件中,只有以下類別才具有 narrow 方法:

POA 類別

POA 類別用於實作 ServantActivatorServantLocator

異常

ForwardRequest 異常指示 ORB 負責將當前請求和後續 ForwardRequest 請求傳遞給異常的 forward_reference 成員所表示的物件。

應用開發人員所實作的介面

PortableServer 執行的大部分操作對使用者是透明的。因此開發人員將只能使用一小部分上述介面。剩餘的介面將由 ORB 實作提供。應用開發人員所需的介面如下:

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

    JavaTM 2 Platform
    Standard Ed. 6

    提交錯誤或意見

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