Using a JDBC connection pool to manage database resources used by an integration server
Use integration node JDBC provider resources to configure the use of thread pools independently of message flow and input node thread pools.
About this task
- Non-pooled connections:
- IBM App Connect Enterprise creates a JDBC connection on demand for each message flow instance that requires one.
- Each JDBC connection is associated with the message flow instance for which it was created. This association is maintained until the connection is closed.
- Each JDBC connection that is idle for 60 seconds is closed, and is no longer associated with a message flow instance.
- After a JDBC connection that was associated with a message flow instance is closed, if the same message flow instance requires a JDBC connection, IBM App Connect Enterprise creates a new JDBC connection on demand.
- Pooled connections:
- When a message flow instance requires a JDBC connection, IBM App Connect Enterprise assigns an unused connection from the pool.
- If all pooled JDBC connections are being used, and the maximum pool size has not been reached, IBM App Connect Enterprise creates a new pooled JDBC connection. The maximum pool size is specified in the Maximum size of connection pool property of the JDBC Providers policy (JDBCProviders).
- Each pooled JDBC connection remains associated with a message flow instance only for the processing of one input message.
- When a message flow instance completes the processing of an input message, the association with a JDBC connection is removed, and the JDBC connection is returned to the pool.
- Each pooled JDBC connection that is idle for 15 minutes is closed, and is removed from the pool.
- Pooled JDBC connections are not applicable to the DatabaseRetrieve and DatabaseRoute nodes.
Using a JDBC connection pool enables you to scale database access independently of the number of message flow threads.
- Minimize the time and resource needed to create new connections, by making pooled connections available for reuse by other message flow threads when transactions complete.
- Enable greater control over the number of concurrent database connections that can be in use at any time for a specific JDBC data source.
You can create a JDBC connection pool by setting the Maximum size of connection
pool
property of the JDBC Providers policy to a non-zero integer value. This property acts
at the integration server level to specify the maximum number of JDBC connection threads that can be
used. A value of zero defaults to the standard WebSphere® Message
Broker Version 8.0 behavior,
where one JDBC connection is created for each message flow thread.
All message flows within an integration server that use the same JDBC Providers policy also share a connection pool. You can monitor the behavior of a JDBC connection pool by using integration node resource statistics
The Maximum size of connection pool
property is applicable to JDBC connections
obtained using the getJDBCType4Connection()
API of the JavaCompute node, and to database operations in
graphical data maps that are called by the Mapping node.
Maximum size of connection pool
property does not apply to the JDBC
connections used by the DatabaseRetrieve or DatabaseRoute nodes.