import org.omg.CosNaming.*;
import org.omg.CosNaming.NamingContextPackage.*;
import org.omg.CORBA.*;
import org.omg.PortableServer.*;
import org.omg.PortableServer.POA;

import java.util.Properties;

class HelloImpl extends HelloPOA {
  private ORB orb;

  public void setORB(ORB orb_val) {
    orb = orb_val; 
  // implement sayHello() method
  public String sayHello() {
    return "\nHello world !!\n";
  // implement shutdown() method
  public void shutdown() {

public class HelloServer {

  public static void main(String args[]) {
      // create and initialize the ORB
      ORB orb = ORB.init(args, null);

      // get reference to rootpoa & activate the POAManager
      POA rootpoa = POAHelper.narrow

      // create servant and register it with the ORB
      HelloImpl helloImpl = new HelloImpl();

      // get object reference from the servant
      org.omg.CORBA.Object ref = rootpoa.servant_to_reference(helloImpl);
      Hello href = HelloHelper.narrow(ref);
      // get the root naming context
      //The string "NameService" is defined for all CORBA ORBs.
      org.omg.CORBA.Object objRef =

      //objRef is a generic object reference. We must narrow it down
      // to the interface we need.
      // Use NamingContextExt which is part of the Interoperable
      // Naming Service (INS) specification.
      NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef);

      // bind the Object Reference with the Naming Service.
      String name = "Hello";
      NameComponent path[] = ncRef.to_name( name );
      //pas the name to the Naming Service, binding the href to the string
      // "Hello"
      ncRef.rebind(path, href);

      System.out.println("HelloServer ready and waiting ...");

      // wait for invocations from clients;
      catch (Exception e) {
        System.err.println("ERROR: " + e);
      System.out.println("HelloServer Exiting ...");

José M. Vidal .

12 of 21