#### 8.5.7.1 Application Startup

A name server normally needs to be started prior to starting any application partition. Once the name server is started, its location must be passed to all partitions as the `name_service` runtime parameter in the `[dsa]` section of the configuration. When using an Ada starter, it is sufficient to pass the name server location to the starter, and it will be propagated automatically to all partitions. When using an embedded name server, the name server is part of the main partition, and does not need to be passed explicitly.

Upon elaboration, each partition registers its RCI packages with the name server. Once this is done, remote calls to RCI subprograms can proceed. Partitions cache the replies from the name server so that during the course of normal execution, inter-partition calls only involve the caller and callee partitions (not the name server).

When the name server kind is set to None, no name server is started, and no attempt is made to register RCI units. Their locations must then be set in the `po_gnatdist` configuration file using Self_Location attributes for all partitions, or overridden in run-time configuration by setting the `<partition>'location` parameter in the `[dsa]` section. A location pair `(<protocol-name>, <protocol-data>)` is encoded as a URI: `<protocol-name>://<protocol-data>`.

For example, to specify that a partition `server_part` is to be reachable using TCP on host `somehost`, port 5555, either use the following setting in the `gnatdist` configuration file:

       for server_part'Self_Location use ("tcp", "somehost:5555");

or the following settings in PolyORB runtime configuration:

    [dsa]
    server_part'location=tcp://somehost:5555

RCI units then act as “clearinghouses” for other partitions to exchange RACWs and set up dynamic communication paths.