orbd.java

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

JAVA
346
字号
/* * @(#)ORBD.java	1.49 03/01/23 * * Copyright 2003 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. *//*  * @(#)ORBD.java	1.27 00/03/02 * * 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.internal.Activation;import java.io.File;import java.util.Properties;import org.omg.CORBA.ORB;import org.omg.CORBA.INITIALIZE;import org.omg.CORBA.INTERNAL;import org.omg.CORBA.CompletionStatus;import org.omg.CosNaming.NamingContext;import org.omg.PortableServer.POA;import org.omg.CORBA.portable.ObjectImpl;import com.sun.corba.se.internal.core.IOR;import com.sun.corba.se.internal.core.ClientSubcontract;import com.sun.corba.se.internal.core.ServerSubcontract;import com.sun.corba.se.internal.ior.ObjectKeyTemplate;import com.sun.corba.se.internal.core.INSObjectKeyMap;import com.sun.corba.se.internal.core.INSObjectKeyEntry;import com.sun.corba.se.internal.CosNaming.BootstrapServer;import com.sun.corba.se.internal.CosNaming.TransientNameService;import com.sun.corba.se.internal.PCosNaming.NameService;import com.sun.corba.se.internal.POA.POAORB;import com.sun.corba.se.internal.orbutil.ORBConstants;import com.sun.corba.se.internal.orbutil.CorbaResourceUtil;import com.sun.corba.se.ActivationIDL.Repository;import com.sun.corba.se.ActivationIDL.RepositoryPackage.ServerDef;import com.sun.corba.se.ActivationIDL.Locator;import com.sun.corba.se.ActivationIDL.LocatorHelper;import com.sun.corba.se.ActivationIDL.Activator;import com.sun.corba.se.ActivationIDL.ActivatorHelper;import com.sun.corba.se.ActivationIDL.ServerAlreadyRegistered;/** *  * @version 	1.10, 97/12/06 * @author	Rohit Garg * @since	JDK1.2 */public class ORBD{    private int initSvcPort;    protected InitialNamingImpl initializeBootNaming(POAORB orb)    {	// construct boostrap server args	Properties props = new Properties(); // null properties	String fileSep = System.getProperty("file.separator");    	File nameFile = new File( dbDir, 	    fileSep + ORBConstants.INITIAL_ORB_DB );    	// create a bootstrap server        BootstrapServer bootServer;	initSvcPort = orb.getORBInitialPort();    	bootServer = new BootstrapServer(orb, initSvcPort, nameFile, props);    	bootServer.start();	// add the Initial Naming object	InitialNamingImpl ins = new InitialNamingImpl(orb, bootServer);	return ins;    }    protected POAORB createORB(String[] args)    {	Properties props = System.getProperties();	props.put( ORBConstants.PERSISTENT_SERVER_PORT_PROPERTY, 	    props.getProperty( ORBConstants.ORBD_PORT_PROPERTY,		Integer.toString( 		    ORBConstants.DEFAULT_ACTIVATION_PORT ) ) ) ;	// See Bug 4396928 for more information about why we are initializing	// the ORBClass to PIORB.	props.put("org.omg.CORBA.ORBClass", 	    "com.sun.corba.se.internal.Interceptors.PIORB");	return (POAORB) ORB.init(args, props);    }    private void run(String[] args)     {	try {	    // parse the args and try setting the values for these	    // properties	    processArgs(args);	    POAORB orb = createORB(args);	    if (orb.orbdDebugFlag) 		System.out.println( "ORBD begins initialization." ) ;	    boolean firstRun = createSystemDirs( ORBConstants.DEFAULT_DB_DIR );	    startActivationObjects(orb);	    if (firstRun) // orbd is being run the first time		installOrbServers(getRepository(), getActivator());	    if (orb.orbdDebugFlag) {		System.out.println( "ORBD is ready." ) ;	        System.out.println("ORBD serverid: " +	                System.getProperty(ORBConstants.SERVER_ID_PROPERTY));	        System.out.println("activation dbdir: " +	                System.getProperty(ORBConstants.DB_DIR_PROPERTY));	        System.out.println("activation port: " +	                System.getProperty(ORBConstants.ORBD_PORT_PROPERTY));                String pollingTime = System.getProperty(                    ORBConstants.SERVER_POLLING_TIME);                if( pollingTime == null ) {                    pollingTime = Integer.toString(                         ORBConstants.DEFAULT_SERVER_POLLING_TIME );                }                System.out.println("activation Server Polling Time: " +                        pollingTime + " milli-seconds ");                String startupDelay = System.getProperty(                    ORBConstants.SERVER_STARTUP_DELAY);                if( startupDelay == null ) {                    startupDelay = Integer.toString(                         ORBConstants.DEFAULT_SERVER_STARTUP_DELAY );                }	        System.out.println("activation Server Startup Delay: " +                        startupDelay + " milli-seconds " );	    }	    // The following two lines start the Persistent NameService            NameServiceStartThread theThread =                new NameServiceStartThread( orb, dbDir, ins );            theThread.start( );	    orb.run();	} catch( org.omg.CORBA.COMM_FAILURE cex ) {            System.out.println( CorbaResourceUtil.getText("orbd.commfailure"));        } catch( org.omg.CORBA.INTERNAL iex ) {            System.out.println( CorbaResourceUtil.getText(                "orbd.internalexception"));        } catch (Exception ex) {	    System.out.println(CorbaResourceUtil.getText(                "orbd.usage", "orbd"));	    System.out.println( ex );	    ex.printStackTrace();	}    }    private void processArgs(String[] args)    {	Properties props = System.getProperties();	for (int i=0; i < args.length; i++) {	    if (args[i].equals("-port")) {	        if ((i+1) < args.length) {	            props.put(ORBConstants.ORBD_PORT_PROPERTY, args[++i]);	        } else {	            System.out.println(CorbaResourceUtil.getText(			"orbd.usage", "orbd"));	        }	    } else if (args[i].equals("-defaultdb")) {	        if ((i+1) < args.length) {	            props.put(ORBConstants.DB_DIR_PROPERTY, args[++i]);	        } else {	            System.out.println(CorbaResourceUtil.getText(			"orbd.usage", "orbd"));	        }	    } else if (args[i].equals("-serverid")) {	        if ((i+1) < args.length) {	            props.put(ORBConstants.SERVER_ID_PROPERTY, args[++i]);	        } else {	            System.out.println(CorbaResourceUtil.getText(			"orbd.usage", "orbd"));	        }	    } else if (args[i].equals("-serverPollingTime")) {	        if ((i+1) < args.length) {	            props.put(ORBConstants.SERVER_POLLING_TIME, args[++i]);	        } else {	            System.out.println(CorbaResourceUtil.getText(			"orbd.usage", "orbd"));	        }	    } else if (args[i].equals("-serverStartupDelay")) {	        if ((i+1) < args.length) {	            props.put(ORBConstants.SERVER_STARTUP_DELAY, args[++i]);	        } else {	            System.out.println(CorbaResourceUtil.getText(			"orbd.usage", "orbd"));	        }            }	}    }    /**     * Ensure that the Db directory exists. If not, create the Db     * and the log directory and return true. Otherwise return false.     */    protected boolean createSystemDirs(String defaultDbDir)    {	boolean dirCreated = false;	Properties props = System.getProperties();	String fileSep = props.getProperty("file.separator");	// determine the ORB db directory	dbDir = new File (props.getProperty( ORBConstants.DB_DIR_PROPERTY,	    props.getProperty("user.dir") + fileSep + defaultDbDir));	// create the db and the logs directories        dbDirName = dbDir.getAbsolutePath();	props.put(ORBConstants.DB_DIR_PROPERTY, dbDirName);	if (!dbDir.exists()) {	    dbDir.mkdir();	    dirCreated = true;	}	File logDir = new File (dbDir, ORBConstants.SERVER_LOG_DIR ) ;	if (!logDir.exists()) logDir.mkdir();	return dirCreated;    }    protected File dbDir;    protected File getDbDir()    {	return dbDir;    }    private String dbDirName;    protected String getDbDirName()    {	return dbDirName;    }    protected InitialNamingImpl ins;    protected void startActivationObjects(POAORB orb) throws Exception    {	// create Initial Name Service object	ins = initializeBootNaming(orb);	// create Repository object	repository = new RepositoryImpl(orb, dbDir, orb.orbdDebugFlag );	ins.bind( ORBConstants.SERVER_REPOSITORY_NAME, repository, false);	// create Locator and Activator objects	com.sun.corba.se.internal.core.ServerGIOP sgiop = orb.getServerGIOP();	sgiop.initEndpoints();	ServerManagerImpl serverMgr =	    new ServerManagerImpl( orb, 				   sgiop,				   repository, 				   getDbDirName(), 				   orb.orbdDebugFlag );	locator = LocatorHelper.narrow(serverMgr);	ins.bind( ORBConstants.SERVER_LOCATOR_NAME, locator, false);	activator = ActivatorHelper.narrow(serverMgr);	ins.bind( ORBConstants.SERVER_ACTIVATOR_NAME, activator, false);        // start Name Service        TransientNameService nameService =             new TransientNameService(orb,                 ORBConstants.TRANSIENT_NAME_SERVICE_NAME);        org.omg.CORBA.Object rootContext = nameService.initialNamingContext();        ins.bind(ORBConstants.TRANSIENT_NAME_SERVICE_NAME,rootContext, false);    }    protected Locator locator;    protected Locator getLocator()    {	return locator;    }    protected Activator activator;    protected Activator getActivator()    {	return activator;    }    protected RepositoryImpl repository;    protected RepositoryImpl getRepository()    {	return repository;    }    /**      * Go through the list of ORB Servers and initialize and start     * them up.     */    protected void installOrbServers(RepositoryImpl repository, 				     Activator activator)    {	int serverId;	String[] server;	ServerDef serverDef;	for (int i=0; i < orbServers.length; i++) {	    try {		server = orbServers[i];		serverDef = new ServerDef(server[1], server[2], 					  server[3], server[4], server[5] );		serverId = Integer.valueOf(orbServers[i][0]).intValue();		repository.registerServer(serverDef, serverId);		activator.activate(serverId);	    } catch (Exception ex) {}	}    }    public static void main(String[] args) {	ORBD orbd = new ORBD();	orbd.run(args);    }    /**     * List of servers to be auto registered and started by the ORBd.     *      * Each server entry is of the form {id, name, path, args, vmargs}.     */    private static String[][] orbServers = {	{""}    };}

⌨️ 快捷键说明

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