Example usage for org.apache.commons.pool.impl GenericObjectPool borrowObject

List of usage examples for org.apache.commons.pool.impl GenericObjectPool borrowObject

Introduction

In this page you can find the example usage for org.apache.commons.pool.impl GenericObjectPool borrowObject.

Prototype

public Object borrowObject() throws Exception 

Source Link

Document

Borrows an object from the pool.

If there is an idle instance available in the pool, then either the most-recently returned (if #getLifo() lifo == true) or "oldest" (lifo == false) instance sitting idle in the pool will be activated and returned.

Usage

From source file:TestObjectPool.java

 public static void main(String args[]) throws Exception {

   GenericObjectPool pool = new GenericObjectPool();
   pool.setFactory(new EmployeeFactory());

   /*First way of initializing pool
   pool.setMinIdle(5);/*from  w  w w  . j a  v  a2  s .c  o  m*/
   pool.setTimeBetweenEvictionRunsMillis(500);
   Thread.currentThread().sleep(600);*/

   /* second, and preferred way */
   for(int i = 0; i < 5; ++i) {
      pool.addObject();
   }

   // pool.setTestOnReturn(true);
   pool.setMinEvictableIdleTimeMillis(1000);
   pool.setTimeBetweenEvictionRunsMillis(600);

   System.err.println("Number of employees in pool: " + pool.getNumIdle());

     Thread.currentThread().sleep(1500);

   Employee employee = (Employee)pool.borrowObject();

   employee.setName("Fred Flintstone");
   employee.doWork();

   System.err.println("Employee: "  + employee);

   pool.returnObject(employee);

     System.err.println("Number of employees in pool: " + pool.getNumIdle());
}

From source file:agiato.cassandra.data.DataManager.java

/**
 * @param connectionPool//from  w w w .j  a  va  2 s  .c o m
 * @return
 * @throws Exception
 */
public Connector borrowConnection(GenericObjectPool connectionPool) throws Exception {
    return (Connector) connectionPool.borrowObject();
}

From source file:agiato.cassandra.data.DataManager.java

/**
 * @param configFile// ww  w  . ja v  a 2s. com
 * @param forceCreateKeySpace
 * @throws Exception
 */
public DataManager(String configFile, boolean forceCreateKeySpace) throws Exception {
    MetaDataManager.initialize(configFile);
    MetaDataManager metaDatamanager = MetaDataManager.instance();
    Cluster cluster = metaDatamanager.getCluster();

    List<HostConnections> hostConnections = new ArrayList<HostConnections>();
    for (Host host : cluster.getHosts()) {
        hostConnections.add(new HostConnections(host, cluster.getPoolConfig()));
    }

    //load balancer
    String loadBalancerClass = cluster.getLoadBalancerClass();
    Class<? extends LoadBalancer> clazz = Class.forName(loadBalancerClass).asSubclass(LoadBalancer.class);
    loadBalancer = clazz.newInstance();
    loadBalancer.setHostConnections(hostConnections);

    GenericObjectPool connectionPool = getConnectionPool();
    Connector connector = (Connector) connectionPool.borrowObject();
    Cassandra.Client client = connector.openConnection();
    String keySpaceName = metaDatamanager.getKeySpace().getName();

    try {
        List<KsDef> ksDefs = client.describe_keyspaces();
        boolean exists = false;
        for (KsDef ksDef : ksDefs) {
            if (ksDef.getName().equals(keySpaceName)) {
                exists = true;
                break;
            }
        }

        //drop existing key space
        if (exists && forceCreateKeySpace) {
            client.system_drop_keyspace(keySpaceName);
            exists = false;
        }

        //create keyspace if it does not exist
        if (!exists) {
            KsDef ks = new KsDef();
            ks.setName(keySpaceName);
            ks.setReplication_factor(metaDatamanager.getKeySpace().getReplicationFactor());
            ks.setStrategy_class(metaDatamanager.getKeySpace().getReplicaPlacementStrategy());

            List<CfDef> cfDefs = new ArrayList<CfDef>();
            for (ColumnFamilyDef colFam : metaDatamanager.getKeySpace().getColumnFamilies()) {
                CfDef cfDef = new CfDef();
                cfDef.setKeyspace(metaDatamanager.getKeySpace().getName());
                cfDef.setName(colFam.getName());

                cfDef.setColumn_type(colFam.getColumnType());
                cfDef.setComparator_type(colFam.getCompareWith());
                if (colFam.isSuperColumn()) {
                    cfDef.setSubcomparator_type(colFam.getCompareSubcolumnsWith());
                }
                if (colFam.isKeysCachedSet()) {
                    cfDef.setKey_cache_size(colFam.getKeysCached());
                }
                if (colFam.isRowsCachedSet()) {
                    cfDef.setRow_cache_size(colFam.getRowsCached());
                }

                cfDefs.add(cfDef);

            }

            ks.setCf_defs(cfDefs);
            client.system_add_keyspace(ks);
            System.out.println("keyspace created : " + keySpaceName);
        } else {
            System.out.println("keyspace already exists : " + keySpaceName);
        }

        //create cf for indexes
        KsDef ksDef = client.describe_keyspace(keySpaceName);
        Set<String> colFamSet = new HashSet<String>();
        if (null != metaDatamanager.getIndexes()) {
            for (IndexDef indexDef : metaDatamanager.getIndexes()) {
                String cfName = indexDef.getColFamilyName();
                List<CfDef> cfDefs = ksDef.getCf_defs();
                boolean cfExists = false;

                for (CfDef cfDef : cfDefs) {
                    if (cfDef.getName().equals(cfName)) {
                        cfExists = true;
                        break;
                    }
                }

                String colFamName = indexDef.getColFamilyName();
                if (!cfExists && !colFamSet.contains(colFamName)) {
                    CfDef cfDef = new CfDef();
                    cfDef.setKeyspace(keySpaceName);
                    cfDef.setName(colFamName);
                    boolean isSuperCol = indexDef.isCatIndexName();
                    cfDef.setColumn_type(isSuperCol ? "Super" : "Standard");
                    cfDef.setComparator_type(
                            indexDef.getIndexedDataType() == IndexDef.TYPE_STRING ? "UTF8Type" : "LongType");
                    if (isSuperCol) {
                        cfDef.setSubcomparator_type(
                                indexDef.getStoredDataType() == IndexDef.TYPE_STRING ? "UTF8Type" : "LongType");
                    }
                    cfDef.setKey_cache_size(indexDef.getIndexKeysCached());
                    cfDef.setRow_cache_size(indexDef.getIndexRowsCached());

                    client.system_add_column_family(cfDef);
                    colFamSet.add(colFamName);

                }
            }
        }

        //asociate key space 
        loadBalancer.associateKeySpace(keySpaceName);

    } finally {
        client.set_keyspace(keySpaceName);
        returnConnection(connector);
    }

}

From source file:Pool162.java

public void testWhenExhaustedBlockInterupt() throws Exception {
    GenericObjectPool pool = new GenericObjectPool(new SimpleFactory());
    //Set this value to 1 to get the deadlock. No deadlock when it sets to 
    //other values.
    pool.setMaxActive(2);//ww w . j ava 2 s  . co  m
    pool.setWhenExhaustedAction(GenericObjectPool.WHEN_EXHAUSTED_BLOCK);

    Object obj1 = pool.borrowObject();

    // Make sure one object was obtained
    if (obj1 == null) {
        throw new Exception("obj1 is null");
    }

    // Create a separate thread to try and borrow another object
    WaitingTestThread wtt = new WaitingTestThread(pool, 200);
    wtt.start();
    // Give wtt time to start
    Thread.sleep(200);
    //bug trigger #1
    wtt.interrupt();
    //bug trigger #1
    // Give interrupt time to take effect
    Thread.sleep(200);
    // Return object to the pool
    pool.returnObject(obj1);
    Object obj2 = null;
    obj2 = pool.borrowObject();
    if (obj2 == null) {
        throw new Exception("obj2 is null");
    }
    pool.returnObject(obj2);
    pool.close();
}

From source file:edu.illinois.enforcemop.examples.apache.pool.TestGenericObjectPool.java

public void testExceptionOnPassivateDuringReturn() throws Exception {
    SimpleFactory factory = new SimpleFactory();
    GenericObjectPool pool = new GenericObjectPool(factory);
    Object obj = pool.borrowObject();
    factory.setThrowExceptionOnPassivate(true);
    pool.returnObject(obj);//from www  . j  av  a 2  s . c o  m
    assertEquals(0, pool.getNumIdle());
    pool.close();
}

From source file:edu.illinois.enforcemop.examples.apache.pool.TestGenericObjectPool.java

public void testExceptionOnActivateDuringBorrow() throws Exception {
    SimpleFactory factory = new SimpleFactory();
    GenericObjectPool pool = new GenericObjectPool(factory);
    Object obj1 = pool.borrowObject();
    Object obj2 = pool.borrowObject();
    pool.returnObject(obj1);// www  .ja  v  a  2 s  .  c o m
    pool.returnObject(obj2);
    factory.setThrowExceptionOnActivate(true);
    factory.setEvenValid(false);
    // Activation will now throw every other time
    // First attempt throws, but loop continues and second succeeds
    Object obj = pool.borrowObject();
    assertEquals(1, pool.getNumActive());
    assertEquals(0, pool.getNumIdle());

    pool.returnObject(obj);
    factory.setValid(false);
    // Validation will now fail on activation when borrowObject returns
    // an idle instance, and then when attempting to create a new instance
    try {
        obj1 = pool.borrowObject();
        fail("Expecting NoSuchElementException");
    } catch (NoSuchElementException ex) {
        // expected
    }
    assertEquals(0, pool.getNumActive());
    assertEquals(0, pool.getNumIdle());
}

From source file:edu.illinois.enforcemop.examples.apache.pool.TestGenericObjectPool.java

public void testExceptionOnDestroyDuringBorrow() throws Exception {
    SimpleFactory factory = new SimpleFactory();
    factory.setThrowExceptionOnDestroy(true);
    GenericObjectPool pool = new GenericObjectPool(factory);
    pool.setTestOnBorrow(true);//  w  w w.j  a v a2 s.c o  m
    pool.borrowObject();
    factory.setValid(false); // Make validation fail on next borrow attempt
    try {
        pool.borrowObject();
        fail("Expecting NoSuchElementException");
    } catch (NoSuchElementException ex) {
        // expected
    }
    assertEquals(1, pool.getNumActive());
    assertEquals(0, pool.getNumIdle());
}

From source file:edu.illinois.enforcemop.examples.apache.pool.TestGenericObjectPool.java

public void testExceptionOnDestroyDuringReturn() throws Exception {
    SimpleFactory factory = new SimpleFactory();
    factory.setThrowExceptionOnDestroy(true);
    GenericObjectPool pool = new GenericObjectPool(factory);
    pool.setTestOnReturn(true);/* w  w w.ja  v a  2 s  .com*/
    Object obj1 = pool.borrowObject();
    pool.borrowObject();
    factory.setValid(false); // Make validation fail
    pool.returnObject(obj1);
    assertEquals(1, pool.getNumActive());
    assertEquals(0, pool.getNumIdle());
}

From source file:edu.illinois.enforcemop.examples.apache.pool.TestGenericObjectPool.java

/**
 * Tests addObject contention between ensureMinIdle triggered by the Evictor
 * with minIdle > 0 and borrowObject.
 *//*from   w w  w .  j  av  a2 s.  c o  m*/
public void testEvictAddObjects() throws Exception {
    SimpleFactory factory = new SimpleFactory();
    factory.setMakeLatency(300);
    factory.setMaxActive(2);
    GenericObjectPool pool = new GenericObjectPool(factory);
    pool.setMaxActive(2);
    pool.setMinIdle(1);
    pool.borrowObject(); // numActive = 1, numIdle = 0
    // Create a test thread that will run once and try a borrow after
    // 150ms fixed delay
    TestThread borrower = new TestThread(pool, 1, 150, false);
    Thread borrowerThread = new Thread(borrower);
    // Set evictor to run in 100 ms - will create idle instance
    pool.setTimeBetweenEvictionRunsMillis(100);
    borrowerThread.start(); // Off to the races
    borrowerThread.join();
    assertTrue(!borrower.failed());
    pool.close();
}

From source file:edu.illinois.enforcemop.examples.apache.pool.TestGenericObjectPool.java

public void testSetFactoryWithNoActiveObjects() throws Exception {
    GenericObjectPool pool = new GenericObjectPool();
    pool.setMaxIdle(10);//from  ww w.  j av a  2  s.c om
    pool.setFactory(new SimpleFactory());
    Object obj = pool.borrowObject();
    pool.returnObject(obj);
    assertEquals(1, pool.getNumIdle());
    pool.setFactory(new SimpleFactory());
    assertEquals(0, pool.getNumIdle());
}