sql >> Database teknologi >  >> RDS >> Mysql

Hvordan tvinger man genbrug af forbindelser i jdbc pool?

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()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.



  1. ORA-4031 fejl med Direct NFS

  2. PHP med MySQL 8.0+ fejl:Serveren anmodede om godkendelsesmetode ukendt for klienten

  3. Deadlock i MySQL på grund af Insert af flere tråde

  4. Hjælp venligst med STRING_SPLIT-forbedringer