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