summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/Naming_Service/README
blob: 55db915353a6c3f00c726f061b5ff5c5fd9171ac (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
// $Id$

This directory contains the files that implement the TAO
Naming server.


To Run:
======

% Naming_Service [-ORBnameserviceport nsport]
                 [-o ior_output_file]
                 [-p pid_file_name]
                 [-s context_size]
                 [-t time]
                 [-f persitence_file_name]

Optional Command-line Arguments:
===============================
        nsport
                Multicast port for listening for requests from
                clients trying to bootstrap to a Naming Service
                through the use of multicast.

        output_file
                The name of the file, in which to store the IOR of the
                root Naming Service context.

       pid_file_name
                The name of the file, in which to store the process id
                of the Naming Service server.

        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.

        time
                How long (in seconds) the server should listen for
                client requests before terminating.

        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.

Environment Variables:
=====================

        NameServicePort
                Multicast port for listening for requests from
                clients trying to bootstrap to a Naming Service
                through the use of multicast.


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.


Implementation Policies:
=======================

- 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.

- 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.

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".

       1. By default (unless other options are specified - see items 2
          and 3 below), ip multicast is used to locate a Naming
          Service. 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, but it is used only as a last resort, i.e., any of the
          options below will override it.

          When OS platform doesn't support multicast, or client or
          server isn't written using TAO, or a more reliable location
          method is desired, etc., one of the options below can be
          used to bootstrap to the Naming Service.

        2. Command-line option -ORBnameserviceior 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 -o ior_file
           % my_client -ORBnameserviceior 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.

        3. TAO implements Interoperable Naming Service.  So, most of the
           initialzation options provided by INS can be used to
           bootstrap to the Naming Service (see TAO's releasenotes for the
           status of INS implementation).