# Package org.apache.tomcat.dbcp.pool2.impl

Object pooling API implementations.

`GenericObjectPool` (`GenericKeyedObjectPool`) provides a more robust (but also more complicated) implementation of `ObjectPool` (`KeyedObjectPool`).

`SoftReferenceObjectPool` provides a `SoftReference` based `ObjectPool`.

See also the `org.apache.tomcat.dbcp.pool2` package.

Interface Summary
CallStack: Strategy for obtaining and printing the current call stack.
DefaultPooledObjectInfoMBean: The interface that defines the information about pooled objects that will be exposed via JMX.
EvictionPolicy<T>: To provide a custom eviction policy (i.e. something other than `DefaultEvictionPolicy` for a pool, users must provide an implementation of this interface that provides the required eviction policy.
GenericKeyedObjectPoolMXBean<K>: Defines the methods that will be made available via JMX.
GenericObjectPoolMXBean: Defines the methods that will be made available via JMX.

Class Summary
AbandonedConfig: Configuration settings for abandoned object removal.
BaseGenericObjectPool<T>: Base class that provides common functionality for `GenericObjectPool` and `GenericKeyedObjectPool`.
BaseObjectPoolConfig<T>: Provides the implementation for the common attributes shared by the sub-classes.
CallStackUtils: Utility methods for `CallStack`.
DefaultEvictionPolicy<T>: Provides the default implementation of `EvictionPolicy` used by the pools.
DefaultPooledObject<T>: This wrapper is used to track the additional information, such as state, for the pooled objects.
DefaultPooledObjectInfo: Implementation of object that is used to provide information on pooled objects via JMX.
EvictionConfig: This class is used by pool implementations to pass configuration information to `EvictionPolicy` instances.
GenericKeyedObjectPool<K,​T>: A configurable `KeyedObjectPool` implementation.
GenericKeyedObjectPoolConfig<T>: A simple "struct" encapsulating the configuration for a `GenericKeyedObjectPool`.
GenericObjectPool<T>: A configurable `ObjectPool` implementation.
GenericObjectPoolConfig<T>: A simple "struct" encapsulating the configuration for a `GenericObjectPool`.
NoOpCallStack: CallStack strategy using no-op implementations of all functionality.
PooledSoftReference<T>: Extension of `DefaultPooledObject` to wrap pooled soft references.
SecurityManagerCallStack: CallStack strategy using a `SecurityManager`.
SoftReferenceObjectPool<T>: A `SoftReference` based `ObjectPool`.
ThrowableCallStack: CallStack strategy that uses the stack trace from a `Throwable`.