You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@commons.apache.org by um...@comcast.net on 2008/12/29 02:02:18 UTC
[commons-pool]: Usage of KeyedObjectPool
Env:
JDK1.6
I have a hierarchy of object types as in
(Animal
(mammal
(dog)
(cat)
...
)
(oviparous
(..)
)
Since a large number of such animals may need to be instantiated,
I need to maintain a pool of "animals" of different species. I assume
that the KeyedObjectPool is the right pool for such an application.
Questions:
a) Is it generally recommended that I subclass GenericKeyedObjectPool
(to, say, AnimalObjectPool) and pool different types of animal objects in there?
b) If I do (a), should I also subclass BaseKeyedPoolableObjectFactory (say,
AnimalObjectFactory)?
Is there a sample to demonstrate the usage of KeyedObjectPool? Are there any
common gotchas to watch out for?
Regards,
/U
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
For additional commands, e-mail: user-help@commons.apache.org
Re: [commons-pool]: Usage of KeyedObjectPool
Posted by Phil Steitz <ph...@gmail.com>.
uma_rk@comcast.net wrote:
> Env:
> JDK1.6
>
> I have a hierarchy of object types as in
>
> (Animal
> (mammal
> (dog)
> (cat)
> ...
> )
> (oviparous
> (..)
> )
>
> Since a large number of such animals may need to be instantiated,
> I need to maintain a pool of "animals" of different species. I assume
> that the KeyedObjectPool is the right pool for such an application.
>
Yes, sounds reasonable.
> Questions:
> a) Is it generally recommended that I subclass GenericKeyedObjectPool
> (to, say, AnimalObjectPool) and pool different types of animal objects in there?
>
Not unless there are features missing that you need or you want to
change behavior. Look at the class javadoc for GenericKeyedObjectPool
for a good description of how it works. If I understand your objective
correctly, you can use one GenericKeyedObject pool to manage a set of
pools keyed on animal type.
> b) If I do (a), should I also subclass BaseKeyedPoolableObjectFactory (say,
> AnimalObjectFactory)?
>
That you do need to do, or more precisely you need to develop a class
that implements the KeyedPoolableObjectFactory interface. You then set
your GenericKeyedObjectPool instance to use this factory to source and
manage lifecycle events for the keyed objects (in your case animals) in
your keyed object pool. See the class javadoc for
KeyedPoolableObjectFactory
> Is there a sample to demonstrate the usage of KeyedObjectPool?
It is a little complicated, but commons dbcp provides a decent example
as it uses a GenericKeyedObjectPool to manage pools of prepared
statements. The makeObject method of dbcp's PoolableConnectionFactory
creates a GenericKeyedObjectPool. The KeyedObjectPoolFactory it uses is
provided by the PoolingConnection class.
> Are there any
> common gotchas to watch out for?
>
The same gotchas that apply to any object pool. Be careful with
maxIdle and the various "abandoned object eviction" settings. Unless
you really need these things, stay away from the abandoned object
settings and leave maxIdle at the default.
Phil
> Regards,
>
>
> /U
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
> For additional commands, e-mail: user-help@commons.apache.org
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
For additional commands, e-mail: user-help@commons.apache.org