transientnameservice.java

来自「java jdk 1.4的源码」· Java 代码 · 共 142 行

JAVA
142
字号
/* * @(#)TransientNameService.java	1.45 03/01/23 * * Copyright 2003 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */package com.sun.corba.se.internal.CosNaming;// Get CORBA typeimport org.omg.CORBA.INITIALIZE;import org.omg.CORBA.ORB;import org.omg.CORBA.CompletionStatus;import org.omg.CORBA.Policy;import org.omg.CORBA.INTERNAL;import org.omg.CORBA.portable.ObjectImpl;import org.omg.PortableServer.POA;import org.omg.PortableServer.LifespanPolicyValue;import org.omg.PortableServer.RequestProcessingPolicyValue;import org.omg.PortableServer.IdAssignmentPolicyValue;import org.omg.PortableServer.ServantRetentionPolicyValue;// Get org.omg.CosNaming typesimport org.omg.CosNaming.NamingContext;// Import transient naming contextimport com.sun.corba.se.internal.CosNaming.TransientNamingContext;import com.sun.corba.se.internal.orbutil.ORBConstants;import com.sun.corba.se.internal.POA.*;/** * Class TransientNameService implements a transient name service * using TransientNamingContexts and TransientBindingIterators, which * implement the org.omg.CosNaming::NamingContext and org.omg.CosNaming::BindingIterator * interfaces specfied by the OMG Common Object Services Specification. * <p> * The TransientNameService creates the initial NamingContext object. * @see NamingContextImpl * @see BindingIteratorImpl * @see TransientNamingContext * @see TransientBindingIterator */public class TransientNameService{    /**     * Constructs a new TransientNameService, and creates an initial     * NamingContext, whose object     * reference can be obtained by the initialNamingContext method.     * @param orb The ORB object     * @exception org.omg.CORBA.INITIALIZE Thrown if     * the TransientNameService cannot initialize.     */    public TransientNameService(com.sun.corba.se.internal.POA.POAORB orb )        throws org.omg.CORBA.INITIALIZE    {        // Default constructor uses "NameService" as the key for the Root Naming        // Context. If default constructor is used then INS's object key for        // Transient Name Service is "NameService"        initialize( orb, "NameService" );    }    /**     * Constructs a new TransientNameService, and creates an initial     * NamingContext, whose object     * reference can be obtained by the initialNamingContext method.     * @param orb The ORB object     * @param nameserviceName Stringified key used for INS Service registry     * @exception org.omg.CORBA.INITIALIZE Thrown if     * the TransientNameService cannot initialize.     */    public TransientNameService(com.sun.corba.se.internal.POA.POAORB orb,        String serviceName ) throws org.omg.CORBA.INITIALIZE    {        // This constructor gives the flexibility of providing the Object Key        // for the Root Naming Context that is registered with INS.        initialize( orb, serviceName );    }    /**      * This method initializes Transient Name Service by associating Root      * context with POA and registering the root context with INS Object Keymap.     */     private void initialize( com.sun.corba.se.internal.POA.POAORB orb,        String nameServiceName )        throws org.omg.CORBA.INITIALIZE    {        try {            POA rootPOA = (POA) orb.resolve_initial_references( "RootPOA" );            rootPOA.the_POAManager().activate();            int i = 0;            Policy[] poaPolicy = new Policy[3];            poaPolicy[i++] = rootPOA.create_lifespan_policy(                LifespanPolicyValue.TRANSIENT);            poaPolicy[i++] = rootPOA.create_id_assignment_policy(                IdAssignmentPolicyValue.SYSTEM_ID);            poaPolicy[i++] = rootPOA.create_servant_retention_policy(                ServantRetentionPolicyValue.RETAIN);            POA nsPOA = rootPOA.create_POA( "TNameService", null, poaPolicy );            nsPOA.the_POAManager().activate();            // Create an initial context            TransientNamingContext initialContext =                new TransientNamingContext(orb, null, nsPOA);            byte[] rootContextId = nsPOA.activate_object( initialContext );            initialContext.localRoot =                nsPOA.id_to_reference( rootContextId );            theInitialNamingContext = initialContext.localRoot;            orb.register_initial_reference( nameServiceName,                 theInitialNamingContext );        } catch (org.omg.CORBA.SystemException e) {            NamingUtils.printException(e);            throw new org.omg.CORBA.INITIALIZE(                MinorCodes.TRANS_NS_CANNOT_CREATE_INITIAL_NC_SYS,                CompletionStatus.COMPLETED_NO);        } catch (Exception e) {            NamingUtils.printException(e);            throw new org.omg.CORBA.INITIALIZE(                MinorCodes.TRANS_NS_CANNOT_CREATE_INITIAL_NC,                CompletionStatus.COMPLETED_NO);        }     }    /**   * Return the initial NamingContext.   * @return the object reference for the initial NamingContext.   */    public org.omg.CORBA.Object initialNamingContext()    {	return theInitialNamingContext;    }    // The initial naming context for this name service    private org.omg.CORBA.Object theInitialNamingContext;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?