manpagez: man pages & more
man tnameserv(1)
Home | html | info | man
tnameserv(1)                                                      tnameserv(1)




NAME

       tnameserv - Java IDL name server starter script


SYNOPSIS

       tnameserv -ORBInitialPort portNumber


DESCRIPTION

       The  CORBA COS (Common Object Services) Naming Service provides a tree-
       like directory for object references much like a filesystem provides  a
       directory  structure  for files.  The Naming Service provided with Java
       IDL is a simple implementation of the COS Naming Service specification.

       Object  references  are stored in the namespace by name and each object
       reference-name pair is called a name binding.   Name  bindings  may  be
       organized  under  naming contexts.  Naming contexts are themselves name
       bindings and serve the same organizational function as  a  file  system
       subdirectory.   All  bindings  are stored under the initial naming con-
       text.  The initial naming context is the only persistent binding in the
       namespace;  the  rest  of  the  namespace  is lost if the Java IDL name
       server process halts and restarts.

       For an applet or application to use COS naming, its ORB must  know  the
       name  and  port  of a host running a naming service or have access to a
       stringified initial naming context for that name  server.   The  naming
       service can either be the Java IDL name server or another COS-compliant
       name service.


USAGE

   Starting the Java IDL Name Server
       You must start the Java IDL name server before an application or applet
       that  uses  its  naming  service.  Installation of the Java IDL product
       creates a script named tnameserv that starts the Java IDL name  server.
       Start the name server so it runs in the background.

       If  you  do  not specify otherwise, the Java IDL name server listens on
       port  900  for  the  bootstrap  protocol  used  to  implement  the  ORB
       resolve_initial_references()   and  list_initial_references()  methods.
       Specify a different port, for example, 1050, as follows:

              example% tnameserv -ORBInitialPort 1050

       Clients of the name server must be made aware of the new  port  number.
       Do this by setting the org.omg.CORBA.ORBInitialPort property to the new
       port number when creating the ORB object.

   Stopping the Java IDL Name Server
       To stop the Java IDL name server, use  the  relevant  operating  system
       command, such as kill(1).  Note that names registered with the Java IDL
       name service disappear when the server is terminated.

   Sample Client: Adding Objects
       The following sample program illustrates how to add names to the names-
       pace.   It is a self-contained Name Server client that creates the fol-
       lowing simple tree.

               Initial
            Naming Context
              /      \
             /        \
          plans      personal
                       /\
                      /  \
               calendar   schedule

       In this example, "plans" is an object reference  and  "personal"  is  a
       naming  context  that  contains  two  object references: "calendar" and
       "schedule".

       import java.util.Properties;
       import org.omg.CORBA.*;
       import org.omg.CosNaming.*;

       public class NameClient
       {
          public static void main(String args[])
          {
             try {

       In the above section, Starting the Java IDL Name Server, the nameserver
       was  started  on port 1050.  The following code ensures that the client
       program is aware of this port number.

               Properties props = new Properties();
               props.put("org.omg.CORBA.ORBInitialPort", "1050");
               ORB orb = ORB.init(args, props);

       The following code obtains the initial naming context and assigns it to
       ctx.  The second line copies ctx into a dummy object reference, objref,
       that we will attach to various names and add into the namespace.

               NamingContext ctx = NamingContextHelper.narrow
                   (orb.resolve_initial_references("NameService"));
               NamingContext objref = ctx;

       The following code creates a name "plans" of type "text" and  binds  it
       to our dummy object reference.  "plans" is then added under the initial
       naming context using rebind.  The rebind method allows us to  run  this
       program over and over again without getting the exceptions we would get
       from using bind.

               NameComponent nc1 = new NameComponent("plans", "text");
               NameComponent[] name1 = {nc1};
               ctx.rebind(name1, objref);
               System.out.println("plans rebind sucessful!");

       The following code creates a naming context called "Personal"  of  type
       "directory".   The  resulting  object  reference, ctx2, is bound to the
       name and added under the initial naming context.

               NameComponent nc2 = new NameComponent("Personal", "directory");
               NameComponent[] name2 = {nc2};
               NamingContext ctx2 = ctx.bind_new_context(name2);
               System.out.println("new naming context added..");

       The remainder of the code binds the dummy object  reference  using  the
       names  "schedule"  and  "calendar"  under the "Personal" naming context
       (ctx2).

               NameComponent nc3 = new NameComponent("schedule", "text");
               NameComponent[] name3 = {nc3};
               ctx2.rebind(name3, objref);
               System.out.println("schedule rebind sucessful!");

               NameComponent nc4 = new NameComponent("calender", "text");
               NameComponent[] name4 = {nc4};
               ctx2.rebind(name4, objref);
               System.out.println("calender rebind sucessful!");

           } catch (Exception e) {
               e.printStackTrace(System.err);
           }
         }
       }


   Sample Client: Browsing the Namespace
       The following sample program illustrates how to browse the namespace.

       import java.util.Properties;
       import org.omg.CORBA.*;
       import org.omg.CosNaming.*;

       public class NameClientList
       {
          public static void main(String args[])
          {
             try {

       In the above section, Starting the Java IDL Name Server, the nameserver
       was  started  on port 1050.  The following code ensures that the client
       program is aware of this port number.

               Properties props = new Properties();
               props.put("org.omg.CORBA.ORBInitialPort", "1050");
               ORB orb = ORB.init(args, props);

       The following code obtains the initial naming context.

               NamingContext nc = NamingContextHelper.narrow
                  (orb.resolve_initial_references("NameService"));

       The list method lists the bindings in  the  naming  context.   In  this
       case,  up  to  1000  bindings  from  the initial naming context will be
       returned in the BindingListHolder; any remaining bindings are  returned
       in the BindingIteratorHolder.

               BindingListHolder bl = new BindingListHolder();
               BindingIteratorHolder blIt= new BindingIteratorHolder();
               nc.list(1000, bl, blIt);

       The following code gets the array of bindings out of the returned Bind-
       ingListHolder.  If there are no bindings, the program ends.

               Binding bindings[] = bl.value;
               if (bindings.length == 0) return;

       The remainder of the code loops through the  bindings  and  prints  the
       names out.

               for (int i=0; i < bindings.length; i++) {

                   // get the object reference for each binding
                   org.omg.CORBA.Object obj = nc.resolve
                            (bindings[i].binding_name);
                   String objStr = orb.object_to_string(obj);
                   int lastIx = bindings[i].binding_name.length-1;

                   // check to see if this is a naming context
                   if (bindings[i].binding_type == BindingType.ncontext) {
                     System.out.println
                            ("Context: " + bindings[i].binding_name[lastIx].id);
                   } else {
                       System.out.println
                              ("Object: " + bindings[i].binding_name[lastIx].id);
                   }
               }

              } catch (Exception e) {
               e.printStackTrace(System.err);
              }
          }
       }



SEE ALSO

       kill(1)



                                 13 June 2000                     tnameserv(1)

Mac OS X 10.7.4 - Generated Thu May 10 19:08:23 CDT 2012
© manpagez.com 2000-2025
Individual documents may contain additional copyright information.