⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nameservice.java

📁 java1.6众多例子参考
💻 JAVA
字号:
/* * @(#)NameService.java	1.11 05/11/17 * * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. *//* * @(#)NameService.java 1.3 00/04/06 * * Copyright 1993-1997 Sun Microsystems, Inc. 901 San Antonio Road, * Palo Alto, California, 94303, U.S.A.  All Rights Reserved. * * This software is the confidential and proprietary information of Sun * Microsystems, Inc. ("Confidential Information").  You shall not * disclose such Confidential Information and shall use it only in * accordance with the terms of the license agreement you entered into * with Sun. * * CopyrightVersion 1.2 * */package com.sun.corba.se.impl.naming.pcosnaming;import java.io.File;import java.util.Properties;import org.omg.CORBA.Policy;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;import org.omg.CosNaming.NamingContext;import org.omg.CosNaming.NamingContextHelper;import org.omg.PortableServer.*;import com.sun.corba.se.spi.orb.ORB ;import com.sun.corba.se.impl.orbutil.ORBConstants ;/** * @version     1.3, 00/04/06 * @author      Hemanth Puttaswamy * @since       JDK1.2 */public class NameService{    private NamingContext rootContext = null;    private POA nsPOA = null;    private ServantManagerImpl contextMgr;    private ORB theorb;    /**     * Create NameService which starts the Root Naming Context in Persistent CosNaming     * @param orb an ORB object.     * @param logDir a File     * @exception java.lang.Exception a Java exception.     */    public NameService(ORB orb, File logDir)	throws Exception    {	theorb = orb;	// Moved this to the creation of the ORB that is passed into this	// constructor.	// 	// This is required for creating Persistent Servants under this ORB	// Right now the Persistent NameService and ORBD are launched together	// Find out a better way of doing this, Since ORBD is an important	// process which should not be killed because of some external process	// orb.setPersistentServerId( (int) 1000 );	// get and activate the root naming POA	POA rootPOA = (POA)orb.resolve_initial_references(	    ORBConstants.ROOT_POA_NAME ) ;	rootPOA.the_POAManager().activate();	// create a new POA for persistent Naming Contexts	// With Non-Retain policy, So that every time Servant Manager	// will be contacted when the reference is made for the context	// The id assignment is made by the NameServer, The Naming Context	// id's will be in the format NC<Index>	int i=0;	Policy[] poaPolicy = new Policy[4];	poaPolicy[i++] = rootPOA.create_lifespan_policy(			 LifespanPolicyValue.PERSISTENT);	poaPolicy[i++] = rootPOA.create_request_processing_policy(			 RequestProcessingPolicyValue.USE_SERVANT_MANAGER);	poaPolicy[i++] = rootPOA.create_id_assignment_policy(		         IdAssignmentPolicyValue.USER_ID);        poaPolicy[i++] = rootPOA.create_servant_retention_policy(			 ServantRetentionPolicyValue.NON_RETAIN);	nsPOA = rootPOA.create_POA("NameService", null, poaPolicy);	nsPOA.the_POAManager().activate( );	// create and set the servant manager	contextMgr = new 	    ServantManagerImpl(orb, logDir, this );	// The RootObject key will be NC0	String rootKey = contextMgr.getRootObjectKey( ); 	// initialize the root Naming Context	NamingContextImpl nc = 		new NamingContextImpl( orb, rootKey, this, contextMgr );	nc = contextMgr.addContext( rootKey, nc );	nc.setServantManagerImpl( contextMgr );	nc.setORB( orb );	nc.setRootNameService( this );	nsPOA.set_servant_manager(contextMgr);	rootContext = NamingContextHelper.narrow(	nsPOA.create_reference_with_id( rootKey.getBytes( ), 	NamingContextHelper.id( ) ) );    }    /**     * This method returns the Root Naming Context     */    public NamingContext initialNamingContext()    {	return rootContext;    }    /**     * This method returns nsPOA which is the only POA that we use for      * Persistent Naming Contexts.     */    POA getNSPOA( ) {        return nsPOA;    }    /**     * This method  creates a NewContext, This will internally invoked from     * NamingContextImpl. It is not a public API. NewContext is in this class     * because a Persiten reference has to be created with Persistent NameService     * POA.     */    public NamingContext NewContext( ) throws org.omg.CORBA.SystemException     {	try	{		// Get the new Naming Context Key from 		// the ServantManager		String newKey = 		contextMgr.getNewObjectKey( );		// Create the new Naming context and create the Persistent		// reference		NamingContextImpl theContext = 		new NamingContextImpl( theorb, newKey,		    this, contextMgr );		NamingContextImpl tempContext = contextMgr.addContext( newKey,						 theContext );		if( tempContext != null )		{			theContext = tempContext;		}		// If the context is read from the File, The following three entries		// will be null. So a fresh setup may be required.		theContext.setServantManagerImpl( contextMgr );		theContext.setORB( theorb );		theContext.setRootNameService( this );	        NamingContext theNewContext = 		NamingContextHelper.narrow(	 	nsPOA.create_reference_with_id( newKey.getBytes( ), 	        NamingContextHelper.id( )) );		return theNewContext;	}	catch( org.omg.CORBA.SystemException e )	{		throw e;	}	catch( java.lang.Exception e )	{		//throw e;	}	return null;    } 	    /**     * getObjectReferenceFromKey returns the Object reference from the objectkey using POA.create_reference_with_id method     * @param Object Key as String     * @returns reference an CORBA.Object.     */    org.omg.CORBA.Object getObjectReferenceFromKey( String key )    { 	org.omg.CORBA.Object theObject = null;	try	{		theObject = nsPOA.create_reference_with_id( key.getBytes( ), NamingContextHelper.id( ) );	}	catch (Exception e )	{		theObject = null;	}        return theObject;    }     /**     * getObjectKey gets the Object Key from the reference using POA.reference_to_id method     * @param reference an CORBA.Object.     * @returns Object Key as String     */    String getObjectKey( org.omg.CORBA.Object reference )    { 	byte theId[];	try	{		theId = nsPOA.reference_to_id( reference ); 	}	catch( org.omg.PortableServer.POAPackage.WrongAdapter e )	{		return null;	}	catch( org.omg.PortableServer.POAPackage.WrongPolicy e )	{		return null;	}	catch( Exception e )	{		return null;	}	String theKey = new String( theId );	return theKey;    } }

⌨️ 快捷键说明

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