Example usage for org.apache.commons.pool.impl GenericKeyedObjectPool addObject

List of usage examples for org.apache.commons.pool.impl GenericKeyedObjectPool addObject

Introduction

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

Prototype

public void addObject(Object key) throws Exception 

Source Link

Document

Create an object using the KeyedPoolableObjectFactory#makeObject factory , passivate it, and then place it in the idle object pool.

Usage

From source file:TestKeyedObjectPool.java

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

   GenericKeyedObjectPool pool = new GenericKeyedObjectPool();
   pool.setFactory(new SkilledEmployeeFactory());

   pool.addObject("Java");
   pool.addObject("Java");
   pool.addObject("VB");
   pool.addObject("C++");

   System.err.println("Number of Java employees in pool: " +
     pool.getNumIdle("Java") + " out of total employees: " +
     pool.getNumIdle());/*  w w  w . j a  va  2  s.c om*/

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

   employee.doWork();

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

   pool.returnObject("Java", employee);

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

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

private void checkEvictionOrder(boolean lifo) throws Exception {
    SimpleFactory factory = new SimpleFactory();
    GenericKeyedObjectPool pool = new GenericKeyedObjectPool(factory);
    pool.setNumTestsPerEvictionRun(2);/*  ww w. ja  va  2  s  . c o m*/
    pool.setMinEvictableIdleTimeMillis(100);
    pool.setLifo(lifo);

    for (int i = 0; i < 3; i++) {
        Integer key = new Integer(i);
        for (int j = 0; j < 5; j++) {
            pool.addObject(key);
        }
    }

    // Make all evictable
    Thread.sleep(200);

    /* 
     * Initial state (Key, Object) pairs in order of age:
     * 
     * (0,0), (0,1), (0,2), (0,3), (0,4)
     * (1,5), (1,6), (1,7), (1,8), (1,9)
     * (2,10), (2,11), (2,12), (2,13), (2,14)
     */

    pool.evict(); // Kill (0,0),(0,1)
    assertEquals(3, pool.getNumIdle(zero));
    Object obj = pool.borrowObject(zero);
    assertTrue(lifo ? obj.equals("04") : obj.equals("02"));
    assertEquals(2, pool.getNumIdle(zero));
    obj = pool.borrowObject(zero);
    assertTrue(obj.equals("03"));
    assertEquals(1, pool.getNumIdle(zero));

    pool.evict(); // Kill remaining 0 survivor and (1,5)
    assertEquals(0, pool.getNumIdle(zero));
    assertEquals(4, pool.getNumIdle(one));
    obj = pool.borrowObject(one);
    assertTrue(lifo ? obj.equals("19") : obj.equals("16"));
    assertEquals(3, pool.getNumIdle(one));
    obj = pool.borrowObject(one);
    assertTrue(lifo ? obj.equals("18") : obj.equals("17"));
    assertEquals(2, pool.getNumIdle(one));

    pool.evict(); // Kill remaining 1 survivors
    assertEquals(0, pool.getNumIdle(one));
    pool.evict(); // Kill (2,10), (2,11)
    assertEquals(3, pool.getNumIdle(two));
    obj = pool.borrowObject(two);
    assertTrue(lifo ? obj.equals("214") : obj.equals("212"));
    assertEquals(2, pool.getNumIdle(two));
    pool.evict(); // All dead now
    assertEquals(0, pool.getNumIdle(two));

    pool.evict(); // Should do nothing - make sure no exception
    pool.evict();

    // Reload
    pool.setMinEvictableIdleTimeMillis(500);
    factory.counter = 0; // Reset counter
    for (int i = 0; i < 3; i++) {
        Integer key = new Integer(i);
        for (int j = 0; j < 5; j++) {
            pool.addObject(key);
        }
        Thread.sleep(200);
    }

    // 0's are evictable, others not 
    pool.evict(); // Kill (0,0),(0,1)
    assertEquals(3, pool.getNumIdle(zero));
    pool.evict(); // Kill (0,2),(0,3)
    assertEquals(1, pool.getNumIdle(zero));
    pool.evict(); // Kill (0,4), leave (1,5)
    assertEquals(0, pool.getNumIdle(zero));
    assertEquals(5, pool.getNumIdle(one));
    assertEquals(5, pool.getNumIdle(two));
    pool.evict(); // (1,6), (1,7)
    assertEquals(5, pool.getNumIdle(one));
    assertEquals(5, pool.getNumIdle(two));
    pool.evict(); // (1,8), (1,9)
    assertEquals(5, pool.getNumIdle(one));
    assertEquals(5, pool.getNumIdle(two));
    pool.evict(); // (2,10), (2,11)
    assertEquals(5, pool.getNumIdle(one));
    assertEquals(5, pool.getNumIdle(two));
    pool.evict(); // (2,12), (2,13)
    assertEquals(5, pool.getNumIdle(one));
    assertEquals(5, pool.getNumIdle(two));
    pool.evict(); // (2,14), (1,5)
    assertEquals(5, pool.getNumIdle(one));
    assertEquals(5, pool.getNumIdle(two));
    Thread.sleep(200); // Ones now timed out
    pool.evict(); // kill (1,6), (1,7) - (1,5) missed
    assertEquals(3, pool.getNumIdle(one));
    assertEquals(5, pool.getNumIdle(two));
    obj = pool.borrowObject(one);
    assertTrue(lifo ? obj.equals("19") : obj.equals("15"));
}