- /*
- * @(#)BootstrapServer.java 1.5 04/03/01
- *
- * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
- */
-
- package com.sun.corba.se.internal.CosNaming;
-
- import java.util.Enumeration;
- import java.util.Properties;
-
- import java.io.File;
- import java.io.FileInputStream;
-
- import com.sun.corba.se.spi.orb.ORB ;
-
- import com.sun.corba.se.spi.resolver.Resolver ;
- import com.sun.corba.se.spi.resolver.LocalResolver ;
- import com.sun.corba.se.spi.resolver.ResolverDefault ;
-
- import com.sun.corba.se.impl.orbutil.CorbaResourceUtil;
- import com.sun.corba.se.impl.orbutil.ORBConstants;
-
- /**
- * Class BootstrapServer is the main entry point for the bootstrap server
- * implementation. The BootstrapServer makes all object references
- * defined in a configurable file available using the old
- * naming bootstrap protocol.
- */
- public class BootstrapServer
- {
- private ORB orb;
-
- /**
- * Main startup routine for the bootstrap server.
- * It first determines the port on which to listen, checks that the
- * specified file is available, and then creates the resolver
- * that will be used to service the requests in the
- * BootstrapServerRequestDispatcher.
- * @param args the command-line arguments to the main program.
- */
- public static final void main(String[] args)
- {
- String propertiesFilename = null;
- int initialPort = ORBConstants.DEFAULT_INITIAL_PORT;
-
- // Process arguments
- for (int i=0;i<args.length;i++) {
- // Look for the filename
- if (args[i].equals("-InitialServicesFile") && i < args.length -1) {
- propertiesFilename = args[i+1];
- }
-
- // Was the initial port specified? If so, override
- // This property normally is applied for the client side
- // configuration of resolvers. Here we are using it to
- // define the server port that the with which the resolvers
- // communicate.
- if (args[i].equals("-ORBInitialPort") && i < args.length-1) {
- initialPort = java.lang.Integer.parseInt(args[i+1]);
- }
- }
-
- if (propertiesFilename == null) {
- System.out.println( CorbaResourceUtil.getText("bootstrap.usage",
- "BootstrapServer"));
- return;
- }
-
- // Create a file
- File file = new File(propertiesFilename);
-
- // Verify that if it exists, it is readable
- if (file.exists() == true && file.canRead() == false) {
- System.err.println(CorbaResourceUtil.getText(
- "bootstrap.filenotreadable", file.getAbsolutePath()));
- return;
- }
-
- // Success: start up
- System.out.println(CorbaResourceUtil.getText(
- "bootstrap.success", Integer.toString(initialPort),
- file.getAbsolutePath()));
-
- Properties props = new Properties() ;
-
- // Use the SERVER_PORT to create an Acceptor using the
- // old legacy code in ORBConfiguratorImpl. When (if?)
- // the legacy support is removed, this code will need
- // to create an Acceptor directly.
- props.put( ORBConstants.SERVER_PORT_PROPERTY,
- Integer.toString( initialPort ) ) ;
-
- ORB orb = (ORB) org.omg.CORBA.ORB.init(args,props);
-
- LocalResolver lres = orb.getLocalResolver() ;
- Resolver fres = ResolverDefault.makeFileResolver( orb, file ) ;
- Resolver cres = ResolverDefault.makeCompositeResolver( fres, lres ) ;
- LocalResolver sres = ResolverDefault.makeSplitLocalResolver( cres, lres ) ;
-
- orb.setLocalResolver( sres ) ;
-
- try {
- // This causes the acceptors to start listening.
- orb.resolve_initial_references(ORBConstants.ROOT_POA_NAME);
- } catch (org.omg.CORBA.ORBPackage.InvalidName e) {
- RuntimeException rte = new RuntimeException("This should not happen");
- rte.initCause(e);
- throw rte;
- }
-
- orb.run() ;
- }
- }