package com.wiley.compbooks.brose.chapter9.dsi;

import java.io.*;
import org.omg.CORBA.*;
import org.omg.CosNaming.*;
import org.omg.PortableServer.*;
import com.wiley.compbooks.brose.chapter9.dsi.*;

public class Server {

    public static void main(String[] args) 
    {
        try 
	{
            if( args.length != 1 )
            {
                System.err.println("Usage: java com....chapter9.dsi.Server <location>");
                System.exit(1);
            }

            //init orb
            ORB orb = ORB.init( args, null );

            //init object adapter
            POA poa = POAHelper.narrow( orb.resolve_initial_references("RootPOA"));
    
            // create a GoodDay object
            GoodDayImpl goodDayImpl = new GoodDayImpl( args[0] );
    
            // export the object reference
	    org.omg.CORBA.Object o = poa.servant_to_reference( goodDayImpl );

            System.out.println( orb.object_to_string( o ) );
    
			try 
			{
				NamingContextExt nc =
					NamingContextExtHelper.narrow( orb.resolve_initial_references("NameService"));

				nc.bind( nc.to_name("any.example"), o );
			}
			catch( Exception e )
			{
				System.err.println("Error contacting NameServer: " + e.getMessage());
			}

            // wait for requests
	    poa.the_POAManager().activate();
            orb.run();

        }
        catch(UserException e) {
            System.err.println(e);
	}
        catch(SystemException e) {
            System.err.println(e);
        }
    }
}
