Package dataAccessLayer

Source Code of dataAccessLayer.ConnectionPool

package dataAccessLayer;

import javax.sql.DataSource;

//Reused from Debugger game.

//
//Here are the dbcp-specific classes.
//Note that they are only used in the setupDataSource
//method. In normal use, your classes interact
//only with the standard JDBC API
//
import org.apache.commons.pool.ObjectPool;
import org.apache.commons.pool.impl.GenericObjectPool;
import org.apache.commons.dbcp.PoolingDataSource;
import org.apache.commons.dbcp.PoolableConnectionFactory;
import org.apache.commons.dbcp.DriverManagerConnectionFactory;

public class ConnectionPool
{
  public static DataSource setupDataSource(String connectURI)
        {
    //
    // First, we'll need a ObjectPool that serves as the
    // actual pool of connections.
    //
    // We'll use a GenericObjectPool instance, although
    // any ObjectPool implementation will suffice.
    //
    // Parameters:
    // - PoolableObjectFactory - looks like it can be set to default if NULL
    // is given for parameter
    // - int maxActive - maximum number of objects that can be borrowed from
    // the pool at one time; default is 8; non-positive number for limitless pool;
    // - byte whenExhaustedAction - specifies the behavior of the
    // borrowObject() method when the pool is exhausted; default is BLOCK;
    // - maxWait - how long (milliseconds) will the pool block the request
    // for new connection if pool is exhausted; if non-positive value given, blocks
    // indefinitely; default value -1;
    // - testOnBorrow - will or will not the pool attempt to validate each
    // object before it is returned from the borrowObject() method
    // - testOnReturn - will or will not the pool attempt to validate each
    // object before it is returned to the pool in the returnObject(java.lang.Object) method
    //
    // Number of parameters available is even longer, but these will do the
    // job for now.

    ObjectPool connectionPool = new GenericObjectPool(null,
                                -1,                                             //Default is 8 changed to 16. Can change to -1 for no limit.
        //GenericObjectPool.DEFAULT_MAX_ACTIVE,
        GenericObjectPool.DEFAULT_WHEN_EXHAUSTED_ACTION,
        GenericObjectPool.DEFAULT_MAX_WAIT,
        GenericObjectPool.DEFAULT_MAX_IDLE, true, false, 3600000,
        GenericObjectPool.DEFAULT_MAX_ACTIVE,
        GenericObjectPool.DEFAULT_MIN_EVICTABLE_IDLE_TIME_MILLIS, true);

    //
    // Next, we'll create a ConnectionFactory that the
    // pool will use to create Connections.
    // We'll use the DriverManagerConnectionFactory,
    // using the connect string passed by GameDB.
    //
    DriverManagerConnectionFactory connectionFactory = new DriverManagerConnectionFactory(
        connectURI, null);

    //
    // Now we'll create the PoolableConnectionFactory, which wraps
    // the "real" Connections created by the ConnectionFactory with
    // the classes that implement the pooling functionality.
    //
    PoolableConnectionFactory poolableConnectionFactory = new PoolableConnectionFactory(
        connectionFactory, connectionPool, null, "SELECT * FROM player LIMIT 0, 1000", false, true);
                //PoolableConnectionFactory poolableConnectionFactory1 = new PoolableConnectionFactory(
    //    connectionFactory, connectionPool, null, "SELECT * FROM player LIMIT 0, 1", false, true);
                //PoolableConnectionFactory poolableConnectionFactory = new PoolableConnectionFactory(
    //    connectionFactory, connectionPool, null, "SELECT * FROM player_owns_env_in_world LIMIT 0, 1", false, true);

    //
    // Finally, we create the PoolingDriver itself,
    // passing in the object pool we created.
    //
    PoolingDataSource dataSource = new PoolingDataSource(connectionPool);
    return dataSource;
  }
}
TOP

Related Classes of dataAccessLayer.ConnectionPool

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.