sql >> Databasteknik >  >> RDS >> Mysql

Hur tvingar man fram återanvändning av anslutningar i jdbc pool?

Du använder faktiskt inte en anslutningspool. En ConnectionPoolDataSource är inte avsedd att användas direkt. Den är avsedd som en (speciell) DataSource för PooledConnection objekt som sedan hålls i en anslutningspool av en (normal) DataSource implementering som tillhandahåller anslutningspoolning.

En normal utvecklare bör inte använda en ConnectionPoolDataSource direkt, den är avsedd att användas med anslutningspooler som tillhandahålls av applikationsservrar, eller för att lindas in i DataSource för allmänt ändamål. s som gav anslutningspoolning.

När en Connection begärs från anslutningspoolen kommer den att checka ut en befintlig PooledConnection (eller begär en ny från dess ConnectionPoolDataSource ), hämta en Connection och returnera det till användaren. När användaren stänger Connection , PooledConnection kommer att signalera anslutningspoolen att den är tillgänglig igen.

I det här fallet skapar du en PooledConnection , hämtar en Connection från den och kassera sedan PooledConnection . Det betyder att PooledConnection överges, och dess fysiska anslutning till databasen kan inte återanvändas och kommer att stängas/kasseras när den äntligen samlas in med skräp (normalt när anslutningspoolen vill stänga den fysiska anslutningen kommer den att anropa close()PooledConnection ).

Du måste antingen använda anslutningspooling som tillhandahålls av din applikationsserver, eller använda en anslutningspool för allmänna ändamål som DBCP, c3p0 eller BoneCP.



  1. Varför MySQL COUNT utan tabellnamn ger 1

  2. Returnerar flera tabeller från en lagrad procedur

  3. Kör Galera Cluster på Kubernetes

  4. hur man tilldelar cte-värde till variabel