Identifying the target server

When a client sends a request to a server, it must indicate which server is to receive the request. You can specify either the SERVER keyword to identify the target server by name or the SERVERID keyword to identify a specific server instance as the target. Most clients use SERVER to identify the target.

When the target server is identified by name, XCF selects an instance of the server to process the request. When the target server is identified by its server id, the client designates which instance of the server is to process the request.

  • The SERVER keyword provides the name of the server that is to process the request.

    When specifying SERVER, you must also specify SYSTEMS to indicate the set of systems to which the request is to be sent. You can specify SYSTEMS=ALL to send the request to all systems in the sysplex, SYSTEMS=OTHER to send the request to all systems in the sysplex excluding the system on which the sender is running, or SYSTEMS=LOCAL to send the request only to the system on which the sender is running. You can also specify SYSTEMS=NAME or SYSTEMS=SYSID to identify the set of target systems, either by system name or XCF system id, respectively. XCF sends the request to each of the indicated systems.

    On each of the target systems, XCF chooses an instance of the server that is suitable for the request and calls the server exit routine to process the request. For the rules that XCF uses to choose a suitable server instance, see Server selection criteria.

  • The SERVERID provides a token that uniquely identifies the particular server instance that is to process the request. XCF sends the request to the system on which the designated server instance was started. On each of the target systems, XCF calls the server exit routine of the designated server instance to process the request. It is up to the client to ensure that the designated server instance is suitable for processing the request.

In general, most clients specify the SERVER keyword to identify the target server by name. However, there might be cases where the client might use SERVERID to send the request to a specific server instance. For example, the client/server application might require the client to communicate with a particular server instance. The client might initially specify SERVER to allow XCF to choose some instance of the server to process the request. The server instance chosen by XCF might allocate resources on behalf of that client. When it sends its response, the server instance includes its server id in the response message, either as part of the message data, or as part of the message control data, or as the value specified for the SENDERID keyword when invoking IXCSEND. The client then specifies SERVERID with that server id when it invokes IXCSEND to send subsequent requests to ensure that the requests get processed by the server instance that allocated the resources on its behalf.

As another example, a client/server application might need to override the rules that XCF uses to choose a suitable server instance. The application might elect to use the server selection criteria in a way that differs from how XCF uses them. The application might need to consider server information specified via the INFO keyword (see IXCSRVR) when determining a suitable server instance. In such cases, the client might need to obtain information about the server before it sends any requests.

If so, the client can send a query request to the XCF Server to get information about the servers of interest. The information returned by XCF includes the server id and attributes of each of the reported server instances. For information on how to interact with the XCF Server to get information about the servers that have been defined in the sysplex, see Using the IXCREQ macro.