+

Search Tips   |   Advanced Search

Monitor server session pools for listener ports

We can minimize the number of resources that server sessions use by enabling server session pool monitoring and defining the timeout value to be applied to a server session.

Each listener port uses one or more server sessions, which are held in a server session pool. Each server session is associated with a JMS session, which is taken from the JMS session pool that is associated with the JMS connection factory that the listener port is configured to use.

By default, server session pool monitoring is disabled. When a listener port uses a server session the listener port does not release the server session from the server session pool until the listener port is shut down. This means that the associated JMS session is not released into the JMS session pool until the listener port is shut down, even if the listener port is not processing any messages. Consequently the resources that the JMS session uses, for example TCP/IP connections, can be held for a long time, and this can cause problems for resource-constrained systems.

To minimize the number of resources that server sessions use, you must monitor the server session pools. When you enable server session pool monitoring each server session in each server session pool that a listener port uses is monitored to determine how much time has elapsed since the server session was last used. If the elapsed time is greater than the timeout value that we have configured, the server session is removed from the server session pool and its associated JMS session is returned to the JMS session pool. The returned JMS session can be either reused by another application or closed, depending on the JMS session pool settings. We can also configure additional pooling mechanisms, depending on the JMS provider.

Server session pool monitoring cannot be used if the message listener service is operating in non-Application Server Facilities (non-ASF) mode, that is if the NON.ASF.RECEIVE.TIMEOUT message listener service custom property is set to a non-zero value.

(zos) Non-ASF mode cannot be selected on z/OS systems.


Example

For example, consider an application server configured with listener ports lp1, and lp2.

The following rules apply:

No properties set

If none of the properties are set, server session pool monitoring is disabled and JMS sessions used by server sessions are not returned to the JMS session pool until the listener port (lp1 or lp2), or its associated message-driven bean, is shut down.

SERVER.SESSION.POOL.REAP.TIME and SERVER.SESSION.POOL.UNUSED.TIMEOUT set

Consider, for example, the following settings:

  • SERVER.SESSION.POOL.REAP.TIME=60

  • SERVER.SESSION.POOL.UNUSED.TIMEOUT=120

The server session pool of both listener ports (lp1 and lp2) is checked for inactive server sessions every 60 seconds. If a server session is detected as being inactive for more than 120 seconds, it is removed from the server session pool and its JMS session is returned to the JMS session pool. Taking into account the SERVER.SESSION.POOL.REAP.TIME value, the server session pool could be removed from the session pool between two and three minutes after the server session was last used.

SERVER.SESSION.POOL.REAP.TIME and SERVER.SESSION.POOL.UNUSED.TIMEOUT set, and overrides set for SERVER.SESSION.POOL.UNUSED.TIMEOUT.lpname

Consider, for example, the following settings:

  • SERVER.SESSION.POOL.REAP.TIME=60

  • SERVER.SESSION.POOL.UNUSED.TIMEOUT=120

  • SERVER.SESSION.POOL.UNUSED.TIMEOUT.lp2=-1

  • SERVER.SESSION.POOL.UNUSED.TIMEOUT.lp1=60

The server session pool for listener port lp2 is not checked because it has a negative timeout value. In the server session pool for listener port lp1, any server sessions that are inactive for more than 60 seconds are removed from the server session pool.


Related concepts

  • Message-driven beans - listener port components

  • Message listener service custom properties
  • Listener port settings