An interface defining life-cycle methods for instances to be served by a {@link KeyedObjectPool}.
By contract, when an {@link KeyedObjectPool}delegates to a {@link KeyedPooledObjectFactory},
- {@link #makeObject} is called whenever a new instance is needed.
- {@link #activateObject} is invoked on every instance that has been{@link #passivateObject passivated} before it is{@link KeyedObjectPool#borrowObject borrowed} from the pool.
- {@link #validateObject} may be invoked on {@link #activateObject activated}instances to make sure they can be {@link KeyedObjectPool#borrowObject borrowed} from the pool.
validateObject
may also be used to test an instance being {@link KeyedObjectPool#returnObject returned} to the poolbefore it is {@link #passivateObject passivated}. It will only be invoked on an activated instance. - {@link #passivateObject passivateObject}is invoked on every instance when it is returned to the pool.
- {@link #destroyObject destroyObject}is invoked on every instance when it is being "dropped" from the pool (whether due to the response from
validateObject
, 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.
{@link KeyedPooledObjectFactory} must be thread-safe. The only promisean {@link KeyedObjectPool} makes is that the same instance of an object willnot be passed to more than one method of a
KeyedPoolableObjectFactory
at a time.
While clients of a {@link KeyedObjectPool} borrow and return instances ofthe underlying value type V, the factory methods act on instances of {@link PooledObject PooledObject<V>}. These are the object wrappers that pools use to track and maintain state informations about the objects that they manage.
@see KeyedObjectPool
@see BaseKeyedPooledObjectFactory
@param < K> The type of keys managed by this factory.
@param < V> Type of element managed by this factory.
@version $Revision: 1333925 $
@since 2.0