package examples.rmi_iiop.hello;

import java.lang.*;

import org.omg.CosNaming.NameComponent;
import org.omg.CosNaming.NamingContextHelper;
import org.omg.CosNaming.NamingContext;
import org.omg.CORBA.ORB;
import org.omg.CORBA.Object;


/**
 * This CORBA client initializes an ORB, obtains a reference to the 
 * HelloServer, and calls HelloServer methods.
 *
 * @author Copyright (c) 2000 by BEA Systems, Inc. All Rights Reserved.
 */
final public class HelloClient {
    static String rmiObj = "HelloServer";  

  public static void main(String args[]) {
    if (args.length < 1) {
      System.out.println("Usage:  java examples.rmi-iiop.hello.HelloClient "
                         + "serverIOR");
    } else {
     
      // initialize ORB
      ORB  orb = ORB.init(args, null);

      // get WebLogic Server IOR from command line argument
      String ior = args[0];
      org.omg.CORBA.Object obj = orb.string_to_object(ior);

      // obtain naming context for WebLogic Server
      NamingContext nc = NamingContextHelper.narrow(obj);

      NameComponent nComp = new NameComponent(rmiObj, "");
      NameComponent path[] = {nComp};
      try {
        // resolve and narrow to RMI object
        obj = nc.resolve(path);
        HelloWorld hi = HelloWorldHelper.narrow(obj); 

        // call method on RMI object
        hi.sayHello();
        System.out.println("Method call completed successfully!");
      } catch (Throwable t) {
        t.printStackTrace();
      }

    }
      
  }

}
