Всъщност не използвате пул за връзки. A ConnectionPoolDataSource не е предназначен за директно използване. Той е предназначен като (специален) DataSource за PooledConnection обекти, които след това се съхраняват в пул за връзки от (нормален) DataSource реализация, която осигурява обединяване на връзки.
Нормалният разработчик не трябва да използва ConnectionPoolDataSource директно, той е предназначен за използване с пулове за връзки, предоставени от сървърите на приложения, или да бъде обвит в DataSource с общо предназначение които осигуряват обединяване на връзки.
Когато има Connection се изисква от пула за връзки, той ще провери съществуваща PooledConnection (или поискайте нов от неговия ConnectionPoolDataSource ), извличане на Connection и го върнете на потребителя. Когато потребителят затвори Connection , PooledConnection ще сигнализира на пула за връзки, че е наличен отново.
В този случай създавате PooledConnection , извличане на Connection от него и след това изхвърляне на PooledConnection . Това означава, че PooledConnection се изоставя и физическата му връзка с базата данни не може да бъде използвана повторно и ще бъде затворена/изхвърлена, когато най-накрая бъде събрана за боклук (обикновено когато пулът за връзки иска да затвори физическата връзка, той ще извика close() на PooledConnection ).
Трябва или да използвате пул за връзки, както е предоставен от вашия сървър на приложения, или да използвате пул за връзки с общо предназначение като DBCP, c3p0 или BoneCP.