[email protected] 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: [email protected]
For additional commands, e-mail: [email protected]



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to