请参见: 
           描述 
| 接口摘要 | |
|---|---|
| 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 );
     }
}