Previous Table of Contents Next


15.5.1 Connection Management


   For the purposes of this discussion, the roles client and server are defined as follows:

   These terms only denote roles with respect to a connection. They do not have any implications for ORB or application architectures.

   In GIOP protocol versions 1.0 and 1.1, connections are not symmetrical. Only clients can send Request, LocateRequest, and CancelRequest messages over a connection, in GIOP 1.0 and 1.1. In all GIOP versions, a server can send Reply, LocateReply, and CloseConnection messages over a connection; however, in GIOP 1.2, 1.3 the client can send them as well. Either client or server can send MessageError messages, in GIOP 1.0 and 1.1.

   If multiple GIOP versions are used on an underlying transport connection, the highest GIOP version used on the connection can be used for handling the close. A CloseConnection message sent using any GIOP version applies to all GIOP versions used on the connection (i.e., the underlying transport connection is closed for all GIOP versions). In particular, if GIOP version 1.2 or higher has been used on the connection, the client can send the CloseConnection message by using the highest GIOP version in use.

   Only GIOP messages are sent over GIOP connections.

   Request IDs must unambiguously associate replies with requests within the scope and lifetime of a connection. Request IDs may be re-used if there is no possibility that the previous request using the ID may still have a pending reply. Note that cancellation does not guarantee no reply will be sent. It is the responsibility of the client to generate and assign request IDs. Request IDs must be unique among both Request and LocateRequest messages.

   15.5.1.1 Connection Closure

   Connections can be closed in two ways: orderly shutdown, or abortive disconnect.

   For GIOP versions 1.0, and 1.1:

   15.5.1.2 Multiplexing Connections

   A client, if it chooses, may send requests to multiple target objects over the same connection, provided that the connection’s server side is capable of responding to requests for the objects. It is the responsibility of the client to optimize resource usage by reusing connections, if it wishes. If not, the client may open a new connection for each active object supported by the server, although this behavior should be avoided.