Du bruger faktisk ikke en forbindelsespulje. En ConnectionPoolDataSource
er ikke beregnet til at blive brugt direkte. Det er tænkt som en (særlig) DataSource
for PooledConnection
objekter, som derefter holdes i en forbindelsespulje af en (normal) DataSource
implementering, der giver forbindelsespooling.
En normal udvikler bør ikke bruge en ConnectionPoolDataSource
direkte, det er beregnet til brug med forbindelsespuljer leveret af applikationsservere, eller til at blive pakket ind i DataSource
til generelle formål s, der gav forbindelsespooling.
Når en Connection
er anmodet om fra forbindelsespuljen, tjekker den en eksisterende PooledConnection
(eller anmod om en ny fra dens ConnectionPoolDataSource
), hente en Connection
og returnere det til brugeren. Når brugeren lukker Connection
, PooledConnection
vil signalere forbindelsespuljen, at den er tilgængelig igen.
I dette tilfælde opretter du en PooledConnection
, henter en Connection
fra den og derefter kassere PooledConnection
. Det betyder, at PooledConnection
bliver opgivet, og dens fysiske forbindelse til databasen kan ikke genbruges og vil blive lukket/kasseret, når den endelig bliver indsamlet skrald (normalt når forbindelsespuljen ønsker at lukke den fysiske forbindelse, vil den kalde close()
på PooledConnection
).
Du skal enten bruge forbindelsespooling som leveret af din applikationsserver, eller du skal bruge en forbindelsespulje til generelle formål som DBCP, c3p0 eller BoneCP.