Chapter 4. Configuration

The AMQ JMS Pool ConnectionFactory implementation exposes several configuration options that control the behavior of the pool and the JMS resources it manages.

The configuration options are exposed as set methods on the JmsPoolConnectionFactory object. For example, the maxConnections option is set using the setMaxConnections(int) method.

4.1. Connection options

These options affect how the JMS pool creates and manages the connections in the pool.

The pooled ConnectionFactory creates a pool of connections for each user and password combination used to create a connection, plus a separate pool for those without a username or password. If you require a more fine-grained division of connections into pools, you must explicitly create distinct pool instances.

The maximum number of connections for a single pool. The default is 1.
The time in milliseconds before a connection not currently on loan can be evicted from the pool. The default is 30 seconds. A value of 0 disables the timeout.
The time in milliseconds between periodic checks for expired connections. The default is 0, meaning the check is disabled.

If enabled, use the JMSContext classes of the underlying JMS provider. It is disabled by default.

In normal operation, the pool uses its own generic JMSContext implementation to wrap connections from the pool instead of using the provider implementation. The generic implementation might have limitations the provider implementation does not. However, when enabled, connections from the JMSContext API are not managed by the pool.

4.2. Session options

These options affect the behavior of sessions that are created from pooled connections.


The maximum number of sessions for each connection. The default is 500. A negative value removes any limit.

If the limit is exceeded, createSession() either blocks or throws an exception, depending on configuration.


If enabled, block createSession() until a session becomes available in the pool. It is enabled by default.

If disabled, calls to createSession() throw an IllegalStateException if no session is available.

The time in milliseconds before a blocked call to createSession() throws an IllegalStateException. The default is -1, meaning the call blocks forever.

If enabled, use a single anonymous JMS MessageProducer for all calls to createProducer(). It is enabled by default.

In rare cases, this behavior is undesirable. If disabled, every call to createProducer() results in a new MessageProducer instance.