You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

GenericObjectPoolUML 1.1 kB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. @startuml
  2. class PoolingDataSource<C extends Connection>{
  3. - final ObjectPool<C> pool
  4. }
  5. class GenericObjectPool<T>{
  6. - final PooledObjectFactory<T> factory
  7. - final Map<IdentityWrapper<T>, PooledObject<T>> allObjects
  8. - final LinkedBlockingDeque<PooledObject<T>> idleObjects
  9. - Evictor evictor
  10. + T borrowObject()
  11. + void returnObject(final T obj)
  12. }
  13. interface ConnectionFactory
  14. class DriverConnectionFactory{
  15. + Connection createConnection()
  16. }
  17. interface PooledObjectFactory<T>
  18. class PoolableConnectionFactory{
  19. - final ConnectionFactory connectionFactory
  20. - volatile ObjectPool<PoolableConnection> pool
  21. + PooledObject<T> makeObject()
  22. + void destroyObject(PooledObject<T> p)
  23. + boolean validateObject(PooledObject<T> p)
  24. + void activateObject(PooledObject<T> p)
  25. }
  26. GenericObjectPool -down-* PoolingDataSource
  27. DriverConnectionFactory .up.|> ConnectionFactory
  28. PoolableConnectionFactory .up.|> PooledObjectFactory
  29. DriverConnectionFactory -down-* PoolableConnectionFactory
  30. PoolableConnectionFactory -left-* GenericObjectPool
  31. PoolableConnectionFactory *-right- GenericObjectPool
  32. @enduml