Connection Pooling

Introduction

Beginning with version 0.3.1, Concourse provides a framework for creating pools of cached database connections. Applications that use connection pools may benefit from increased performance since requests can take advantage of previously established connections and therefore avoid the overhead of creating new ones.

Concourse supports both fixed and cached connection pools. A FixedConnectionPool maintains a fixed number of connections for the duration of its use. If all the connections from a fixed pool are taken, then subsequent requests will block until a connection is returned to the pool. On the other hand, a CachedConnectionPool never blocks and will create new connections on demand if the pool does not have any available to service a request.

You can create both kinds of connection pools by calling the appropriately named static factory method in the ConnectionPool class.

Creating a FixedConnectionPool
ConnectionPool connections = ConnectionPool.newFixedConnectionPool(host, port, username, password, poolSize);
Creating a CachedConnectionPool
ConnectionPool connections = ConnectionPool.newCachedConnectionPool(host, port, username, password);

Usage

// assumes that the connection pool has been previously created
Concourse connection = null;
try{
	connection = pool.request();
	// do stuff
}
finally {
	if(connection != null){
		pool.release(connection);
	}
}

 

API Documentation

The API for fixed and cached connection pools is the same.

close

void close() throws Exception

Closes this resource, relinquishing any underlying resources. This method is invoked automatically on objects managed by the try-with-resources statement.

hasAvailableConnections

boolean hasAvailableConnections()

Return true if this pool has any available connections.

Returns

  • true if a subsequent call the request() will not block

release

void release(Concourse connection)

Return a previously requested connection back to the pool.

Parameters

  • connection

request

Concourse request()

Request a connection from the pool and possibly block until one is available.

Returns

  • a connection to Concourse