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