The Java dispatcher receives the client request and forwards it to the server process with the lowest capacity usage. If there is already a connection to the client, the request goes to the server process that processes this client.
If a request arrives at the dispatcher for the first time, it is received by the connection request handler. The connection request handler deals with the following tasks:
· It initializes a connection object, which from now on is assigned to this connection. The client then has a connection to the connection manager for all subsequent requests.
· It asks the load balancer which server is going to process this client. A weighted round-robin procedure is used for this (see Load Balancing by the Java Dispatcher).
From now the client is connected to the connection manager, which decides, on the basis of the requests, which session service is selected (for example, HTTP or RMI). All subsequent requests from this client are sent to the same server.
The communication handler accepts the data and passes it to the Server Process.
The dispatcher contains the following components.
· The connection request handler receives the first request from a client (see above). From this time point on, the client has a fixed connection to the dispatcher.
· The connection manager manages the existing connections to the clients.
· The session level services are services that are assigned to a session.
· The communication handler forwards the request to the server process. Accumulating requests are stored in the request queue.
The graphic below shows the structure of the dispatcher.
The dispatcher only forwards each inbound request to a Server Process.
The dispatcher gets information about which server processes are currently active from the Message Server.