CORBA 2.3.7 Programmer's Guide for Java
ORB.resolve_initial_references (NameService) , for example), but this relatively simple way is used for this example.
Network Client ORB Tries to Contact Target Object (flow 4 in the figure)
Once it has the CORBA::Object, the client ORB narrows the reference to a COSNaming Naming Context. The client ORB must determine if the
target object is a naming context, so it performs the following:
Connects to the address in the IIOP profile (LSD).●
Sends an _is_a request to the LSD. Note that other client ORBs might first send a locate_request to the LSD, rather than an _is_a
request.
●
In either case, the object key in the request is taken from the COSNaming Naming Context.
LSD Builds and Sends Forwarding Reply (flows 5 and 6 in the figure)
The LSD acts as a listener process and responds to requests. It:
Demarshals the object key and determines that the object is configured to use_comm_server.●
Finds a Comm Server (flow 5 in the figure) by:
Using the client's TCP/IP address as the key to csmap@map_table.●
Using the mapped Comm Server if mapping is present. (If the mapping is older than 24 hours, it updates the timestamp in the record.)●
Creating a new mapping for the Comm Server if no mapping is present. To create the mapping, the LSD searches the
csmap@load_table for the least busy server, skipping dedicated comm_servers, and writes the new record in csmap@map_table,
keyed by clients TCP/IP address. (If Parallel TCP/IP is configured, the LSD doesn't search the load table, but picks the next logical
Comm Server using a round-robin technique.)
●
●
Sends the forwarding reply, which contains a new reference with the Comm Server address and the original object key.●
Client ORB Tries Again (flows 6 and 7 in the figure)
The client ORB receives and demarshals the new reference (flow 6 in the figure).
The client ORB resends the original request (flow 7 in the figure). When the client ORB resends, it:
Connects to the address in the IIOP profile of the Comm Server●
Sends an _is_a request to the Comm Server●
Comm Server Receives and Relays Request (flows 7 and 8 in the figure)
The Comm Server now initiates the following actions:
The Comm Server receives the connection (flow 7 in the figure) and creates an IIOP client_agent.●
The client_agent demarshals the request up through the object key.●
The client_agent demarshals the object key to find the state policy = STATELESS, and to find the tsmp relay profile.●
The client_agent gets the tsmp server_agent. The key is tsmp profile. The agent asks the server_agent to relay the request.
The server_agent interposes a server_agent scoped request ID and sends the request to the server via LINKMON.
●
LINKMON delivers the request to the Naming Service based on the Pathway load (flow 8 in the figure).●
Naming Service Processes Request (flows 8 and 9 in the figure)
The chosen server ORB receives (flow 8 in the figure) and processes the request. The ORB:
Demarshals the request.●
Dispatches the request to the target object. The CORBA::Object handles the is_a request, and the result is TRUE.●
Builds the reply.●
Sends the tsmp reply (flow 9 in the figure).●