Interface PooledObjectFactory<T>

Type Parameters:
T - Type of element managed in this factory.
All Known Implementing Classes:
PoolableConnectionFactory, PoolableManagedConnectionFactory

public interface PooledObjectFactory<T>
An interface defining life-cycle methods for instances to be served by an ObjectPool.

By contract, when an ObjectPool delegates to a PooledObjectFactory,

  1. makeObject() is called whenever a new instance is needed.
  2. activateObject(org.apache.tomcat.dbcp.pool2.PooledObject<T>) is invoked on every instance that has been passivated before it is borrowed from the pool.
  3. validateObject(org.apache.tomcat.dbcp.pool2.PooledObject<T>) may be invoked on activated instances to make sure they can be borrowed from the pool. validateObject(org.apache.tomcat.dbcp.pool2.PooledObject<T>) may also be used to test an instance being returned to the pool before it is passivated. It will only be invoked on an activated instance.
  4. passivateObject(org.apache.tomcat.dbcp.pool2.PooledObject<T>) is invoked on every instance when it is returned to the pool.
  5. destroyObject(org.apache.tomcat.dbcp.pool2.PooledObject<T>) is invoked on every instance when it is being "dropped" from the pool (whether due to the response from validateObject(org.apache.tomcat.dbcp.pool2.PooledObject<T>), or for reasons specific to the pool implementation.) There is no guarantee that the instance being destroyed will be considered active, passive or in a generally consistent state.
PooledObjectFactory must be thread-safe. The only promise an ObjectPool makes is that the same instance of an object will not be passed to more than one method of a PoolableObjectFactory at a time.

While clients of a KeyedObjectPool borrow and return instances of the underlying value type V, the factory methods act on instances of PooledObject<V>. These are the object wrappers that pools use to track and maintain state information about the objects that they manage.

See Also: