Skip navigation links
Java™ Platform
Standard Ed. 8

Package org.omg.PortableServer

提供类和接口,使您的应用程序的服务器端可跨多厂商ORBs移植。

See: 描述

Package org.omg.PortableServer Description

提供类和接口,使您的应用程序的服务器端可跨多厂商ORBs移植。

在Java中,基于便携式对象适配器(POA)的动态骨架接口(DSI)服务器继承自Servant类的标准DynamicImplementation类。 本地Servant类型由用于POA的PortableServer模块定义。 在Java中, Servant类型映射到Java org.omg.PortableServer.Servant类。 它用作所有POA服务器实现的基类,并提供了可以由应用程序员调用的多种方法,以及由POA自身调用并可被用户覆盖以控制仆人行为方面的方法。

包装规格

有关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的策略。 sample code下面的演示。 PolicyValue文件包括以下内容:

助手班

为OMG IDL接口中的所有用户定义类型生成的助手类提供了处理这些类型所需的静态方法。 应用程序员使用的辅助类中只有一种方法: narrow方法。 只有从IDL接口映射的Java接口将具有一个助手类,其中包含一个narrow方法,所以在PortableServer包中,只有以下类具有narrow方法:

POA类

POA类用于实现ServantActivatorServantLocator

例外

所述ForwardRequest异常指示给它负责将当前请求和随后的ORB ForwardRequest请求在所表示的对象forward_reference异常的部件。

应用程序员实现的接口

PortableServer大部分内容对用户来说都是透明的。 结果是程序员只会使用上面提到的几个接口。 剩余的接口将由ORB实现提供。 应用程序员感兴趣的界面如下:

套餐org.omg.PortableServer.ServantLocatorPackage

该包提供一个CookieHolder类,用于传递Cookie类型作为out参数。 CookieHolder类遵循与基本类型的其他持有者类完全相同的模式。

相关文档

有关Java IDL的概述,请参阅:

  • Java IDL home page

    示例代码

    服务器代码示例

      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
    Skip navigation links
    Java™ Platform
    Standard Ed. 8