summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/Naming_Service/README
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/orbsvcs/Naming_Service/README')
-rw-r--r--TAO/orbsvcs/Naming_Service/README409
1 files changed, 409 insertions, 0 deletions
diff --git a/TAO/orbsvcs/Naming_Service/README b/TAO/orbsvcs/Naming_Service/README
new file mode 100644
index 00000000000..9cc96f8575d
--- /dev/null
+++ b/TAO/orbsvcs/Naming_Service/README
@@ -0,0 +1,409 @@
+// README,v 1.19 2001/02/02 20:21:38 schmidt Exp
+
+This directory contains files that implement a server for the TAO
+Naming Service. In addition, it contains files that run the TAO
+Naming Service as a Windows NT Service. Both of these services are
+described below.
+
+How to Run the TAO Naming Service
+=================================
+
+The following describes how to run the TAO Naming Service.
+
+1. Syntax
+
+ % Naming_Service [-ORBNameServicePort nsport]
+ [-o ior_output_file]
+ [-p pid_file_name]
+ [-s context_size]
+ [-t time]
+ [-f persistence_file_name]
+ [-b base_address]
+ [-m (1=enable multicast responses,0=disable(default)]
+ [-z time]
+ [-d ]
+ [-u directory]
+ [-r directory]
+
+
+2. Optional Command-line Arguments
+
+ -ORBNameServicePort nsport
+ Multicast port for listening for requests from clients
+ trying to bootstrap to a Naming Service through the
+ use of multicast. This is only used when multicast
+ responding is enabled via '-m 1'.
+
+ -o ior_output_file
+ The name of the file, in which to store the IOR of the
+ root Naming Service context.
+
+ -p pid_file_name
+ The name of the file, in which to store the process id
+ of the Naming Service server.
+
+ -s context_size
+ Size of the hash table allocated for the root Naming
+ Context (if one is created). All contexts created
+ under the root will use the same size for their hash
+ tables. The default is 1024.
+
+ -t time
+ How long (in seconds) the server should listen for
+ client requests before terminating.
+
+ -f persistence_file_name
+ The name of the file to use to store/retrieve
+ persistent state of the Naming Service. Without this
+ option, Naming Service is started in non-persistent
+ mode.
+
+ -b base_address
+ The address used for memory mapping the file specified
+ with the "-f" option above. The value supplied with
+ this option is only used when the Naming Service runs
+ in persistent mode, i.e., "-f" option is present.
+
+ -m <0|1>
+ TAO offers a simple, very non-standard method for
+ clients to discover the initial reference for the
+ Naming Service. However, since it can be inadequate and cause
+ unexpected results if, for example, there are multiple
+ naming services running on the network, the DEFAULT
+ behavior is for the Naming Service to NOT RESPOND to
+ such multicast queries (use the Interoperable Naming
+ Service bootstrap options instead).
+
+ -z time
+ A relative round trip timeout value (in seconds) that
+ the service should wait for when trying to progress an
+ operation through a federated naming context before
+ timing out and throwing a 'Cannot proceed' exception
+ to the client. If no value is set this will never occur.
+
+ -d
+ Provides Naming Service specific debug information. By default
+ no diagnostics are given.
+
+ -u directory
+ Use a flat-file persistence implementation that stores object
+ reference information in a file per context. Each context file
+ is placed in the directory specified.
+
+ -r directory
+ Use redundant flat-file persistnece; same as the -u option,
+ except more than one instance of the TAO Naming Service server
+ can run, each using the same set of disk files, to achieve a
+ degree of fault tolerence (as long as directory is accessible
+ to both servers).
+
+
+3. Environment Variables
+
+ NameServicePort
+ Multicast port for listening for requests from clients
+ trying to bootstrap to a Naming Service through the
+ use of multicast. This is only used when multicast
+ responding is enabled via '-m 1'.
+
+4. Persistence
+
+ TAO Naming Service has an optional persistence capability. By
+ default, the Naming Service is started in a non-persistent
+ mode. Supplying "-f" command-line option to the server causes
+ a persistent version of the Naming Service to run.
+
+ The file specified with the "-f" option is used to store the
+ persistent state of the Naming Service, i.e., all Naming
+ Contexts and their bindings. When "-f" option is specified:
+
+ 1. If the specified file does not exist, it is created and
+ used to store the state of the Naming Service. An initial
+ (root) Naming Context is also created.
+
+ 2. If the specified file exists, it is scanned and:
+
+ a) If any inconsistency is detected in the stored
+ state, or the file is not recognized by the Naming
+ Service, the server exits. (This may happen, for
+ example, if a server or host crashed in the middle of
+ writing a record to this file on a previous run). A
+ noncorrupted version of the file must be used instead.
+
+ b) If the file is recognized and is ok, the state
+ stored in the file becomes the current state of the
+ Naming Service.
+
+ Internally, TAO uses memory mapped file to implement
+ persistence feature of the Naming Service. A default memory
+ address (ACE_DEFAULT_BASE_ADDR) is used for mapping the file.
+ Alternate mapping address can be specified at compile-time by
+ redefining TAO_NAMING_BASE_ADDR in tao/orbconf.h. Alternate
+ mapping address can also be specified at run-time
+ with the "-b" command-line option, which takes precedence over
+ TAO_NAMING_BASE_ADDR definition.
+ NOTE: Naming Service stores absolute pointers in its
+ memory-mapped file. Therefore, it is important to use the
+ same mapping address on each run for the same persistence file.
+
+
+5. Implementation Policies
+
+ a. Destroying Binding Iterators
+
+ A binding iterator is destroyed when client invokes
+ <destroy> operation either on the iterator itself or
+ on the naming context it is iterating over. In both
+ cases, subsequent calls on the binding iterator object
+ will cause OBJECT_NOT_EXIST exception.
+
+ b. Dealing with orphaned contexts
+
+ This implementation of the Naming Service does not
+ include any form of 'garbage collection' for orphaned
+ naming contexts. It is solely the responsibility of
+ clients to clean up after themselves and not leak
+ server resources. All the resources, including
+ orphaned contexts, are released during the Naming
+ Server shutdown.
+
+6. Clients: ways to bootstrap to the Naming Service:
+
+ There are several methods for a client to bootstrap to a
+ Naming Service, i.e., there are several mechanisms
+ <resolve_initial_references> can use when asked for
+ "NameService". In order of predictable behavior, they are:
+
+ 1. Command-line options
+
+ The "-ORBInitRef NameService=IOR:..." or environment
+ variable NameServiceIOR can be used on the client side
+ to specify the object that the call to
+ <resolve_initial_references> should return to the
+ client. (On the server side, -o option can be used to
+ get the ior).
+
+ Example (Unix, same host):
+
+ % $TAO_ROOT/orbsvcs/Naming_Service/Naming_Service -o ior_file
+ % my_client -ORBInitRef NameService=file://ior_file
+
+ On the first line, we start the Naming
+ Service, and output its ior to <ior_file>. On
+ the second line, we start some client, and
+ specify the ior <resolve_initial_references>
+ should return for the Naming Service in a file
+ format.
+
+ 2. Interoperable Naming Service.
+
+ TAO implements the standard CORBA Interoperable Naming
+ Service (ING). Therefore, most initialization options
+ provided by INS can be used to bootstrap to the Naming
+ Service (see TAO's release notes for the status of INS
+ implementation).
+
+ 3. Multicast
+
+ When started with the "respond to multicast queries"
+ option turned on ('-m 1'), clients can use IP
+ multicast to query for a Naming Service, and this
+ instance will respond. TAO Naming Server is listening
+ for client multicast requests on a specified port. On
+ the client side, <resolve_initial_references> sends
+ out a multicast request on the network, trying to
+ locate a Naming Service. When a Naming Server
+ receives a multicast request from a client, it replies
+ to the sender with the ior of its root Naming Context.
+ Note, the port used for this bootstrapping process,
+ i.e., 'multicast port', has nothing to do with the ORB
+ port used for CORBA communication. Other points worth
+ mentioning:
+
+ - A client and a server will only click through this
+ multicast protocol if they are using the same
+ multicast port. For both client and server
+ -ORBnameserviceport command-line option and
+ NameServicePort environment variable can be used to
+ specify the multicast port to use. If none is
+ specified, the default port is used. (The ability
+ to specify multicast ports can be used to match
+ certain clients with certain Naming Servers, when
+ there are more than one Naming Server running on the
+ network).
+
+ - If there are several Naming Servers running on the
+ network, each listening on the same port for
+ multicast requests, each will send a reply to a
+ client's request. The client's orb will use the
+ first response it receives, so the Naming Service
+ will, in fact, be selected at random.
+
+ Since this mechanism is proprietary to TAO (i.e.,
+ non-standard), it only works when both client and
+ server are written using TAO. There is no way to turn
+ multicasting off on the client side, but it is used
+ only as a last resort, i.e., any of the other options
+ will override it.
+
+ When OS platform doesn't support multicast, or client
+ or server isn't written using TAO, or a more
+ reliable/predictable location method is desired, etc.,
+ one of the other options can be used to bootstrap to
+ the Naming Service.
+
+
+How to use the NT_Naming_Service
+================================
+
+To set the options for the TAO Naming Service, go to the Services icon
+in the Settings group under the start menu (start menu -> settings ->
+services). There, highlight the NT_Naming_Service, which is the name
+used by the Naming Service when it is registered. After it's
+highlighted, you should see at the bottom of the dialog box an area to
+specify options. Just enter the options you wish in that edit box and
+everything should just work. However, some options, such as
+-ORBDebugLevel, won't work since an NT service can't write output to
+standard out.
+
+1. Syntax
+
+ % NT_Naming_Server [-i value]
+ [-r]
+ [-s]
+ [-k]
+ [-t n]
+ [-d]
+
+2. Optional Command-line Arguments
+
+ -i value
+ Install this program as an NT service, with specified startup
+
+ -r
+ Remove this program from the Service Manager
+ -s
+ Start the service
+
+ -k
+ Kill the service
+
+ -t value
+ Set startup for an existing service
+
+ -d
+ Debug; run as a regular application
+
+3. Usage
+
+ To see different stages of an NT service application, you have
+ to run the program several times, with different options.
+ Please note: run with only one option at a time.
+
+ a. First, you must initialize the service in the NT SCM
+ database. Run NT_Naming_Service with -in, where n is one of
+ the following startup options:
+
+ // Start Type (from WinNT.h)
+ //
+ #define SERVICE_SYSTEM_START 0x00000001
+ #define SERVICE_AUTO_START 0x00000002
+ #define SERVICE_DEMAND_START 0x00000003
+ #define SERVICE_DISABLED 0x00000004
+
+ If only -i is specified, SERVICE_DEMAND_START is default option.
+
+ b. Now you are ready to run the actual service. Run
+ NT_Naming_Service again, this time with -s option. If the
+ service starts successfully, it will ring the system
+ bell every second or so until the service is stopped.
+
+ c. To stop service execution, run NT_Naming_Service with the
+ -k option.
+
+ d. To remove the service from the Service Control Manager
+ database, run NT_Naming_Service with -r.
+
+ In addition, once you have initialized this service (by using
+ the -i option) you can change its startup type to one of the
+ other values above. To do this, run NT_Naming_Service with
+ -tn option. n is as explained above for -i.
+
+ In order to debug the service's execution itself, use the -d
+ option.
+
+Troubleshooting
+============================================
+
+Q1. Error Message: "subscribe: no such device"
+
+A1. On starting, the error message "subscribe: no such device" is a
+rather cryptic message saying that basically either you don't support
+multicasting or there is no route for multicasting on one of your
+network interfaces( e.g. eth0 ).
+
+---------------------------------------
+(Step 1)
+Check to see if you have multicasting enabled. In the case of Linux
+you will need to check the configuration of your kernel. RedHat users
+have multicasting enabled by default. Once you are sure that you have
+multicast enabled then move to the next step. Alternative is to start
+Naming_Service with multicast disabled.
+
+
+---------------------------------------
+(Step 2)
+Check to see if you have the route for multicasting. Linux users can
+do this by running:
+
+ /sbin/route
+
+You should see something like this:
+
+Kernel IP routing table
+Destination Gateway Genmask Flags Metric Ref Use Iface
+10.0.0.0 * 255.255.255.0 U 0 0 0 eth0
+127.0.0.0 * 255.0.0.0 U 0 0 0 lo
+224.0.0.0 * 240.0.0.0 U 0 0 0 eth0
+
+If you don't see the line for multicast routing:
+
+224.0.0.0 * 240.0.0.0 U 0 0 0 eth0
+
+You will need to add in the next step. If you do see that line and the
+problem is still there then contact the tao-users list by using
+email. Please remember to use the problem form. It helps developers to
+have a more educated guess at the exact problem you are having.
+
+
+---------------------------------------
+(Step 3)
+
+You can do this manually in a script that start the Naming service:
+
+(Linux/Unix):
+
+ /sbin/route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0
+
+Alternatively for RedHat users you can add this into a file
+"/etc/sysconfig/static-routes". As of Redhat 7, you might have to
+create this file, you can make an entry:
+
+ eth0 net 240.0.0.0 netmask 240.0.0.0
+
+On startup when the network interfaces that will be supporting
+multicast routing are started the route will be added. In my case it
+adds multicasting routing to eth0 (the first NIC).
+
+----------------------------------------
+(Step 4)
+
+Double check that the route has been added correctly using /sbin/route.
+
+Kernel IP routing table
+Destination Gateway Genmask Flags Metric Ref Use Iface
+10.0.0.0 * 255.255.255.0 U 0 0 0 eth0
+127.0.0.0 * 255.0.0.0 U 0 0 0 lo
+224.0.0.0 * 240.0.0.0 U 0 0 0 eth0
+
+At this point you should be able to run Naming_Service. Have fun!