I was trying to change the behaviour of GenericKeyedObjectPool.evict() so that it would always leave at least one instance in each of the pools. However because all the fields in the class are private, and the evict() method accesses all these fields directly, it is impossible. What is the point of providing these generic classes if they can't be effectively overriden without totally reimplementing them? IMHO all private fields and methods in GenericKeyedObjectPool should be protected. Cheers, Jon Nermut
