Module  java.corba
软件包  org.omg.CORBA

Class ORB

  • 已知直接子类:
    ORB


    public abstract class ORB
    extends Object
    一个为CORBA对象请求代理功能提供API的类。 ORB类还提供了“可插拔ORB实现”API,允许使用另一个供应商的ORB实现。

    ORB使CORBA对象能够通过连接请求(客户端)与对象处理请求(服务器)的对象进行通信。

    封装通用CORBA功能的ORB类执行以下操作:(请注意,包含ORB类中大多数方法的项目5和6通常与Dynamic Invocation Interface (DII)和Dynamic Skeleton Interface (DSI)一起使用。接口可能直接由开发人员使用,但最常见的是它们由ORB在内部使用,一般程序员不会看到。)

    1. 通过提供预定义属性和环境参数的值来初始化ORB实现
    2. 使用方法resolve_initial_references获取诸如NameService的服务的初始对象引用
    3. 将对象引用转换为字符串并返回
    4. 将ORB连接到servant(CORBA对象实现的实例),并断开ORB与仆人的连接
    5. 创建对象,如
      • TypeCode
      • Any
      • NamedValue
      • Context
      • Environment
      • 列表(如NVList )包含这些对象
    6. 在DII中发送多条消息

    ORB类可用于获取对网络上任何地方实现的对象的引用。

    通过使用三种init方法之一将应用程序或小程序初始化为ORB可以访问CORBA环境。 这三种方法中的两种使用下表所示的属性(名称与值的关联)。

    Standard Java CORBA Properties: Property Name Property Value org.omg.CORBA.ORBClass class name of an ORB implementation org.omg.CORBA.ORBSingletonClass class name of the ORB returned by init()

    这些属性允许不同供应商的ORB实现被“插入”。

    当创建ORB实例时,使用以下标准搜索顺序找到ORB实现的类名:

    1. 检查Applet参数或应用程序字符串数组(如果有)
    2. 检查属性参数(如果有)
    3. 检查系统属性(如果有)
    4. 检查位于user.home目录中的orb.properties文件(如果有)
    5. 检查运行时映像中的orb.properties文件(如果有)
    6. 回到硬编码的默认行为(使用Java IDL实现)

    请注意,Java IDL为全功能ORB和Singleton ORB提供了默认实现。 当方法init没有给出参数时,返回默认的Singleton ORB。 当方法init被给定参数但没有指定ORB类时,返回Java IDL ORB实现。

    以下代码段创建一个使用默认ORB Singleton初始化的ORB对象。 这个ORB有一个有限的实现,以防止恶意小程序做任何事情超出创建类型代码。 它被称为单例,因为整个虚拟机只有一个实例。

      ORB orb = ORB.init(); 

    以下代码片段为应用程序创建一个ORB对象。 参数args表示提供给应用程序的main方法的参数。 由于该属性将ORB类指定为“SomeORBImplementation”,所以新ORB将被该ORB实现初始化。 如果p已经为空,并且参数没有指定ORB类,则新的ORB将被初始化为默认的Java IDL实现。

      Properties p = new Properties();
        p.put("org.omg.CORBA.ORBClass", "SomeORBImplementation");
        ORB orb = ORB.init(args, p); 

    以下代码片段为作为第一个参数提供的小程序创建一个ORB对象。 如果给定的小程序没有指定ORB类,新的ORB将使用默认的Java IDL实现进行初始化。

      ORB orb = ORB.init(myApplet, null); 

    应用程序或小程序可以在一个或多个ORB中进行初始化。 ORB初始化是对CORBA世界的引导调用。

    Implementation Note:
    当通过系统属性或orb.properties配置单例ORB时,它将被定位,并通过系统类加载器加载。 因此,在适当的情况下,这个替代ORBSingleton的类在应用程序的类路径上可用。 应该注意的是,单体ORB是系统的。

    当通过2-arg init方法创建每个应用程序的ORB时,它将使用线程上下文类加载器来定位。

    IDL到Java语言OMG规范将$ {java.home} / lib目录作为位置,在Java运行时映像中记录,以搜索orb.properties。 此位置不适用于用户可编辑的配置文件。 因此,实现首先检查orb.properties的$ {java.home} / conf目录,然后检查$ {java.home} / lib目录。

    参见IDL developer's guide

    从以下版本开始:
    JDK1.2
    • 构造方法详细信息

      • ORB

        public ORB​()
    • 方法详细信息

      • init

        public static ORB init​()
        返回ORB单例对象。 此方法总是返回相同的ORB实例,它是由org.omg.CORBA.ORBSingletonClass系统属性描述的类的实例。

        方法init无参数版本主要用作TypeCode对象的工厂,由Helper类用于实现方法type 它也用于创建Any对象,用于描述union标签(作为为TypeCode创建TypeCode对象的union )。

        该方法不是由applet使用的,如果在applet环境中调用该方法,则返回的ORB将被限制,因此它只能用作TypeCode对象的工厂。 它生成的任何TypeCode对象可以在不可信的小程序之间安全地共享。

        如果使用此方法从小程序创建ORB,则如果调用了创建TypeCode对象的方法以外的方法,则将抛出系统异常。

        Implementation Note:
        通过系统属性或orb.properties配置时,系统级单例ORB通过系统类加载器定位。
        结果
        单身ORB
      • init

        public static ORB init​(String[] args,
                               Properties props)
        为独立应用程序创建一个新的ORB实例。 此方法可能仅从应用程序调用,并在每次调用时返回一个新的功能全面的ORB对象。
        Implementation Note:
        通过系统属性或orb.properties配置时,ORB通过线程上下文类加载器定位。
        参数
        args - 应用程序的main方法的命令行参数; 可以是null
        props - 应用程序特定的属性; 可能是null
        结果
        新创建的ORB实例
      • init

        public static ORB init​(Applet app,
                               Properties props)
        为一个小程序创建一个新的ORB实例。 此方法可能仅从applet调用,并在每次调用时返回一个新的全功能ORB对象。
        Implementation Note:
        通过系统属性或orb.properties配置时,ORB通过线程上下文类加载器定位。
        参数
        app - 小程序 可能是null
        props - 小程序特定属性; 可以是null
        结果
        新创建的ORB实例
      • set_parameters

        protected abstract void set_parameters​(String[] args,
                                               Properties props)
        允许使用给定的参数和属性初始化ORB实现。 仅在应用程序中使用的此方法由子类ORB实现实现,并通过适当的init方法调用以传入其参数。
        参数
        args - 应用程序的main方法的命令行参数; 可能是null
        props - 应用程序特定的属性; 可能是null
      • set_parameters

        protected abstract void set_parameters​(Applet app,
                                               Properties props)
        允许使用给定的小程序和参数初始化ORB实现。 该方法仅在applet中使用,由ORB实现子类实现,并通过适当的init方法调用,以传入其参数。
        参数
        app - 小程序 可能是null
        props - 小程序特定属性; 可以是null
      • connect

        public void connect​(Object obj)
        将给定的服务对象(作为服务器实现类的实例的Java对象)连接到ORB。 servant类必须扩展与服务器支持的接口对应的ImplBase类。 因此,仆人必须是CORBA对象引用,并继承自org.omg.CORBA.Object 用户创建的服务器可以在方法connect被调用后开始接收远程调用。 如果在非本地对象的IDL方法调用中作为IDL参数传递,则serator也可以自动和隐式地连接到ORB,即如果servant对象必须编组并发送到进程地址之外空间。

        当servant对象已经连接到ORB时,调用方法connect不起作用。

        OMG不赞成使用便携式对象适配器API。

        参数
        obj - 仆对象引用
      • destroy

        public void destroy​()
        破坏ORB,以便资源可以回收。 对被破坏的ORB引用调用的任何操作将抛出OBJECT_NOT_EXIST异常。 一旦ORB已被破坏,其他呼叫init具有相同ORBid将参考返回到新建ORB。

        如果在尚未关闭的ORB上调用destroy ,则它将启动关闭进程并阻止,直到ORB在销毁ORB之前已关闭。
        如果一个应用程序调用destroy在当前服务调用线程,该BAD_INV_ORDER系统异常将与OMG次要代码3被抛出,因为阻塞将导致死锁。

        为了最大的可移植性和避免资源泄漏,应用程序应始终在退出之前调用所有ORB实例上的shutdowndestroy

        异常
        BAD_INV_ORDER - 如果当前线程服务于调用
      • disconnect

        public void disconnect​(Object obj)
        断开给定的servant对象与ORB的连接。 此方法返回后,ORB将拒绝断开连接的服务器的传入远程请求,并将异常org.omg.CORBA.OBJECT_NOT_EXIST发送回远程客户端。 因此,对象似乎从远程客户端的角度被破坏。 但请注意,使用仆人发出的本地请求直接不通过ORB; 因此,他们将继续由仆人处理。

        如果服务器未连接到ORB,则调用方法disconnect不起作用。

        OMG不赞成使用便携式对象适配器API。

        参数
        obj - 要从ORB断开的servant对象
      • list_initial_services

        public abstract String[] list_initial_services​()
        返回最初可用的CORBA对象引用的列表,例如“NameService”和“InterfaceRepository”。
        结果
        一组 String对象,代表最初可用于此ORB的CORBA服务的对象引用
      • resolve_initial_references

        public abstract Object resolve_initial_references​(String object_name)
                                                   throws InvalidName
        从可用的初始服务名称集中解析特定的对象引用。
        参数
        object_name - 作为字符串的初始服务的名称
        结果
        与给定名称相关联的对象引用
        异常
        InvalidName - 如果给定的名称不与已知服务相关联
      • object_to_string

        public abstract String object_to_string​(Object obj)
        将给定的CORBA对象引用转换为字符串。 请注意,此字符串的格式由IIOP预定义,允许由不同ORB生成的字符串转换回对象引用。

        可以以可以操纵String对象的任何方式存储或传送所得到的String对象。

        参数
        obj - 对stringify的对象引用
        结果
        该字符串表示对象引用
      • string_to_object

        public abstract Object string_to_object​(String str)
        将由方法 object_to_string生成的字符串转换回CORBA对象引用。
        参数
        str - 要转换回对象引用的字符串。 它必须是使用方法object_to_string将对象引用转换为字符串的object_to_string
        结果
        对象引用
      • create_list

        public abstract NVList create_list​(int count)
        分配一个NVList (可能)足够的空间用于指定数量的NamedValue对象。 请注意,指定的大小只是帮助存储分配的提示,并不意味着列表的最大大小。
        参数
        count - 建议号码 NamedValue对象为其分配空间
        结果
        新创 NVList
        另请参见:
        NVList
      • create_operation_list

        public NVList create_operation_list​(Object oper)
        创建一个NVList初始化的参数描述,在给定的OperationDef对象中描述的操作。 OperationDef对象是从Interface Repository获得的。 返回的NVList对象中的参数与原始IDL操作定义中的参数相同,这使得该列表可用于动态调用请求。
        参数
        oper - 用于创建列表的 OperationDef对象
        结果
        一个新创建的 NVList对象,其中包含对给定的 OperationDef对象中描述的方法的参数的描述
        另请参见:
        NVList
      • create_named_value

        public abstract NamedValue create_named_value​(String s,
                                                      Any any,
                                                      int flags)
        使用给定的名称,值和参数模式标志创建一个NamedValue对象。

        A NamedValue对象用作(1)参数或返回值或(2)上下文属性。 它可以自己使用或作为NVList对象中的元素使用。

        参数
        s - NamedValue对象的名称
        any - 要插入 NamedValue对象的 Any
        flags -为对所述参数模式标志 NamedValue :之一 ARG_IN.valueARG_OUT.value ,或 ARG_INOUT.value
        结果
        新创建的 NamedValue对象
        另请参见:
        NamedValue
      • create_exception_list

        public abstract ExceptionList create_exception_list​()
        创建一个空的 ExceptionList对象。
        结果
        新创建的 ExceptionList对象
      • create_context_list

        public abstract ContextList create_context_list​()
        创建一个空的 ContextList对象。
        结果
        新创建的 ContextList对象
        另请参见:
        ContextListContext
      • get_default_context

        public abstract Context get_default_context​()
        获取默认的 Context对象。
        结果
        默认为 Context对象
        另请参见:
        Context
      • create_environment

        public abstract Environment create_environment​()
        创建一个 Environment对象。
        结果
        新创建的 Environment对象
        另请参见:
        Environment
      • create_output_stream

        public abstract OutputStream create_output_stream​()
        创建一个新的 org.omg.CORBA.portable.OutputStream ,在方法调用期间可以编入IDL方法参数。
        结果
        新创建的 org.omg.CORBA.portable.OutputStream对象
      • send_multiple_requests_oneway

        public abstract void send_multiple_requests_oneway​(Request[] req)
        以异步方式发送多个动态(DII)请求,而不需要任何响应。 请注意,单向调用不能保证到达服务器。
        参数
        req - 一个请求对象数组
      • send_multiple_requests_deferred

        public abstract void send_multiple_requests_deferred​(Request[] req)
        以异步方式发送多个动态(DII)请求。
        参数
        req - 一个 Request对象的数组
      • poll_next_response

        public abstract boolean poll_next_response​()
        找出任何延迟(异步)调用是否有响应。
        结果
        true如果有响应可用; false否则
      • get_next_response

        public abstract Request get_next_response​()
                                           throws WrongTransaction
        获取接收到响应的下一个 Request实例。
        结果
        下一个 Request对象准备好响应
        异常
        WrongTransaction - 如果从与发送原始请求的事务范围不同的事务范围调用方法get_next_response 有关详细信息,请参阅OMG事务服务规范。
      • get_primitive_tc

        public abstract TypeCode get_primitive_tc​(TCKind tcKind)
        检索表示给定的原始IDL类型的 TypeCode对象。
        参数
        tcKind - 对应于所需原始类型的 TCKind实例
        结果
        请求的 TypeCode对象
      • create_struct_tc

        public abstract TypeCode create_struct_tc​(String id,
                                                  String name,
                                                  StructMember[] members)
        创建一个TypeCode对象,代表一个IDL struct TypeCode对象使用给定的id,name和成员进行初始化。
        参数
        id -为库ID struct
        name - 的名字 struct
        members - 一个描述 struct成员的 struct
        结果
        描述IDL的新创建的 TypeCode对象 struct
      • create_union_tc

        public abstract TypeCode create_union_tc​(String id,
                                                 String name,
                                                 TypeCode discriminator_type,
                                                 UnionMember[] members)
        创建一个表示IDL unionTypeCode对象。 TypeCode对象使用给定的id,name,discriminator类型和成员进行初始化。
        参数
        id - 该库的ID为 union
        name - 的名字 union
        discriminator_type - union鉴别器的类型
        members - 一个描述 union的成员的 union
        结果
        新创建的 TypeCode对象描述一个IDL union
      • create_enum_tc

        public abstract TypeCode create_enum_tc​(String id,
                                                String name,
                                                String[] members)
        创建TypeCode表示IDL对象枚举 TypeCode对象使用给定的id,name和成员进行初始化。
        参数
        id -为库ID 枚举
        name - 的名称为 枚举
        members - 描述 枚举的成员的 枚举
        结果
        描述IDL 枚举的新创 TypeCode对象
      • create_alias_tc

        public abstract TypeCode create_alias_tc​(String id,
                                                 String name,
                                                 TypeCode original_type)
        创建一个表示IDL aliastypedef )的TypeCode对象。 TypeCode对象使用给定的id,name和original类型进行初始化。
        参数
        id - 别名的存储库标识
        name - 别名的名称
        original_type - 描述这是别名的原始类型的 TypeCode对象
        结果
        描述IDL alias的新创建的 TypeCode对象
      • create_exception_tc

        public abstract TypeCode create_exception_tc​(String id,
                                                     String name,
                                                     StructMember[] members)
        创建一个表示IDL exceptionTypeCode对象。 TypeCode对象使用给定的id,name和成员进行初始化。
        参数
        id -为库ID exception
        name - 的名字为 exception
        members - 一个描述 exception成员的 exception
        结果
        新创建的 TypeCode对象描述一个IDL exception
      • create_interface_tc

        public abstract TypeCode create_interface_tc​(String id,
                                                     String name)
        创建TypeCode表示IDL对象interface TypeCode对象使用给定的id和名称进行初始化。
        参数
        id - 接口的存储库标识
        name - 接口的名称
        结果
        新创建的 TypeCode对象描述一个IDL interface
      • create_string_tc

        public abstract TypeCode create_string_tc​(int bound)
        代表一个有界的IDL string一个TypeCode对象。 TypeCode对象被初始化为给定的绑定,它表示字符串的最大长度。 零表示由此类型代码描述的字符串是无界的。
        参数
        bound - 约束为string ; 不能是负面的
        结果
        描述有界IDL string的新创建的 TypeCode对象
        异常
        BAD_PARAM - 如果绑定是负值
      • create_wstring_tc

        public abstract TypeCode create_wstring_tc​(int bound)
        表示一个TypeCode对象,表示一个有界的IDL wstring (宽字符串)。 TypeCode对象使用给定的边界进行初始化,表示宽字符串的最大长度。 零表示由此类型代码描述的字符串是无界的。
        参数
        bound - 约束为wstring ; 不能是负面的
        结果
        新创建的 TypeCode对象描述一个有界IDL wstring
        异常
        BAD_PARAM - 如果绑定是负值
      • create_sequence_tc

        public abstract TypeCode create_sequence_tc​(int bound,
                                                    TypeCode element_type)
        创建TypeCode表示IDL对象sequence TypeCode对象使用给定的绑定和元素类型进行初始化。
        参数
        bound - sequencesequence ,如果无限制为0
        element_type -所述 TypeCode对象描述元素包含在 sequence
        结果
        新创建的 TypeCode对象描述一个IDL sequence
      • create_recursive_sequence_tc

        @Deprecated
        public abstract TypeCode create_recursive_sequence_tc​(int bound,
                                                              int offset)
        已过时。 使用create_recursive_tc和create_sequence_tc的组合
        创建一个TypeCode对象,代表一个递归的IDL sequence

        对于以下代码片段中的IDL struct节点,创建其序列的偏移量参数为1:

          Struct Node {
                long value;
                Sequence <Node> subnodes;
            }; 
        参数
        bound - 序列的边界,如果为无限制则为0
        offset - 描述此序列元素的封闭 TypeCode对象的索引
        结果
        描述递归序列的新创建的 TypeCode对象
        另请参见:
        create_recursive_tccreate_sequence_tc
      • create_array_tc

        public abstract TypeCode create_array_tc​(int length,
                                                 TypeCode element_type)
        创建TypeCode表示IDL对象array TypeCode对象使用给定的长度和元素类型进行初始化。
        参数
        length - 长度为 array
        element_type - 一个 TypeCode对象,描述包含在 array的元素的类型
        结果
        描述IDL array的新创建的 TypeCode对象
      • create_native_tc

        public TypeCode create_native_tc​(String id,
                                         String name)
        为IDL本机类型创建一个 TypeCode对象。
        参数
        id - 本机类型的逻辑ID。
        name - 本机类型的名称。
        结果
        请求的TypeCode。
      • create_abstract_interface_tc

        public TypeCode create_abstract_interface_tc​(String id,
                                                     String name)
        为IDL抽象接口创建一个 TypeCode对象。
        参数
        id - 抽象接口类型的逻辑ID。
        name - 抽象接口类型的名称。
        结果
        请求的TypeCode。
      • create_fixed_tc

        public TypeCode create_fixed_tc​(short digits,
                                        short scale)
        为IDL固定类型创建一个 TypeCode对象。
        参数
        digits - 指定数字中的十进制数字的总数,并且必须为1到31(含)。
        scale - 指定小数点的位置。
        结果
        请求的TypeCode。
      • create_value_tc

        public TypeCode create_value_tc​(String id,
                                        String name,
                                        short type_modifier,
                                        TypeCode concrete_base,
                                        ValueMember[] members)
        为IDL值类型创建一个TypeCode对象。 concrete_base参数是TypeCode,用于创建TypeCode的类型的即时具体值类型。 如果贵重物品没有具体基础,则可以为null。
        参数
        id - 值类型的逻辑ID。
        name - 值类型的名称。
        type_modifier - 值类型修饰符常量之一:VM_NONE,VM_CUSTOM,VM_ABSTRACT或VM_TRUNCATABLE
        concrete_base - 描述具体价值类型基础的 TypeCode对象
        members - 包含值类型成员的数组
        结果
        请求的TypeCode
      • create_recursive_tc

        public TypeCode create_recursive_tc​(String id)
        在创建包含递归的TypeCode的过程中创建一个递归的TypeCode对象,该对象用作具体TypeCode的占位符。 id参数指定递归TypeCode作为占位符的类型的存储库ID。 一旦递归的TypeCode已正确嵌入到与指定的存储库ID相对应的封闭TypeCode中,它将作为普通的TypeCode。 在递归的TypeCode嵌入到封闭的TypeCode之前调用操作将导致一个BAD_TYPECODE异常。

        例如,以下IDL类型声明包含递归:

          Struct Node {
                Sequence<Node> subnodes;
            }; 

        要为struct Node创建一个TypeCode,可以调用TypeCode创建操作,如下所示:

          String nodeID = "IDL:Node:1.0";
         TypeCode recursiveSeqTC = orb.create_sequence_tc(0, orb.create_recursive_tc(nodeID));
         StructMember[] members = { new StructMember("subnodes", recursiveSeqTC, null) };
         TypeCode structNodeTC = orb.create_struct_tc(nodeID, "Node", members); 

        另请注意,以下是非法的IDL类型声明:

          Struct Node {
                Node next;
            }; 

        递归类型只能出现在可以为空的序列中。 当在任何一个传输结构时,这样解决问题就会被避免。

        参数
        id - 引用类型的逻辑ID
        结果
        请求的TypeCode
      • create_value_box_tc

        public TypeCode create_value_box_tc​(String id,
                                            String name,
                                            TypeCode boxed_type)
        为IDL值框创建一个 TypeCode对象。
        参数
        id - 值类型的逻辑ID
        name - 值类型的名称
        boxed_type - 类型的TypeCode
        结果
        请求的TypeCode
      • create_any

        public abstract Any create_any​()
        创建一个IDL Any对象,初始化对象包含一个 Typecode对象,其对象的 kind字段设置为 TCKind.tc_null
        结果
        一个新创的 Any对象
      • get_current

        @Deprecated
        public Current get_current​()
        已过时。 使用resolve_initial_references
        检索Current对象。 Current接口用于管理线程特定的信息,供业务(例如事务和安全性)使用。
        结果
        一个新创建的 Current对象
        另请参见:
        CORBA package comments for unimplemented features
      • run

        public void run​()
        此操作阻止当前线程,直到ORB完成关闭进程,当某个线程调用shutdown时启动。 它可能被多个线程使用,当ORB关闭时,它们会被通知。
      • shutdown

        public void shutdown​(boolean wait_for_completion)
        指示ORB关闭,这导致所有对象适配器关闭,以备破坏。
        如果wait_for_completion参数为真,则此操作将阻塞,直到完成所有ORB处理(包括处理当前正在执行的请求,对象禁用和其他对象适配器操作)为止。 如果一个应用程序在当前处于调用状态的线程中执行此操作,则OMG次要代码3将抛出BAD_INV_ORDER系统异常,因为阻塞将导致死锁。
        如果wait_for_completion参数为FALSE ,则返回时关机可能未完成。

        当ORB正在关闭的过程中,ORB正常运行,为传入和传出请求提供服务,直到所有请求完成。 一旦ORB关闭,只能在ORB或从其获取的任何对象引用中调用对象引用管理操作。 应用程序也可以在ORB本身上调用destroy操作。 调用任何其他操作将抛出BAD_INV_ORDER系统异常与OMG次要代码4。

        ORB.run方法将在shutdown被调用后返回。

        参数
        wait_for_completion - true如果呼叫应该阻塞,直到关机完成; false如果它应该立即返回
        异常
        BAD_INV_ORDER - 如果当前线程正在服务调用
      • work_pending

        public boolean work_pending​()
        返回 true如果ORB需要主线程来执行某些工作,并 false如果ORB不需要主线程。
        结果
        true如果有待处理的工作,意味着ORB需要主线程执行一些工作; false如果没有正在工作,因此ORB不需要主线程
      • perform_work

        public void perform_work​()
        如果主线程调用,则执行依赖于实现的工作单元。 否则它什么都不做。 方法work_pendingperform_work可以结合使用来实现在ORB和其他活动之间复用主线程的简单轮询循环。
      • get_service_information

        public boolean get_service_information​(short service_type,
                                               ServiceInformationHolder service_info)
        用于获取有关该ORB支持的CORBA设施和服务的信息。 正在请求信息的服务类型作为参数service_type ,CORBA模块中由常量定义的值。 如果服务信息可用于该类型,则返回参数service_info ,并且操作返回值true 如果没有所请求的服务类型的信息可用,则操作返回false (即,该ORB不支持该服务)。
        参数
        service_type - 表示正在请求信息的服务类型的 short
        service_info - 一个 ServiceInformationHolder对象,将保存由此方法生成的 ServiceInformation对象
        结果
        true如果服务信息可用于service_type ; false如果没有所请求的服务类型的信息可用
        另请参见:
        CORBA package comments for unimplemented features
      • create_policy

        public Policy create_policy​(int type,
                                    Any val)
                             throws PolicyError
        可以调用以创建具有指定初始状态的特定类型的策略对象的新实例。 如果create_policy由于无法解释策略的请求类型和内容而无法实例化新的Policy对象,则会由于适当的原因引发PolicyError异常。
        参数
        type - 要创建的策略对象的 PolicyType
        val - 将用于设置创建的 Policy对象的初始状态的值
        结果
        引用由 type参数指定的类型新建的 Policy对象,并初始化为由 val参数指定的状态
        异常
        PolicyError - when the requested policy is not supported or a requested initial state for the policy is not supported.