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

Forbindelser er nogle gange ikke tilgængelige i c3p0

Du har højst sandsynligt en forbindelseslækage. En gigantisk poolstørrelse hjælper ikke rigtig med det. Se venligst her .

Bilag:Robust Resource Cleanup-formsprog

Det er bedst, når du kan bruge prøv med ressourcer . Men hvis du arbejder med en ældre version af Java (før Java 7), eller med ressourcer, der ikke implementerer AutoCloseable du skal muligvis stadig vende tilbage til denne slags ting.

Connection c     = null;
OtherResource or = null;

try
{
   c  = cpds.getConnection();
   or = getOtherResource()

   // do stuff
   // ...
}
finally
{
  try { if (or != null) or.close(); }
  catch (Exception e) { e.printStackTrace(); }

  try { if (c != null) c.close(); }
  catch (Exception e) { e.printStackTrace(); }
}

Bemærk, at finally-sætningen helt sikkert vil blive udført, hvis forbindelsen er erhvervet, og der er en best-attempt close() for hver ressource:If or undlader at lukke(), vil denne undtagelse ikke forhindre forsøget på at lukke() forbindelsen.

Du skal være meget forsigtig. Som Keynes berømt udtrykte det, er der mange smykker mellem koppen og læben.




  1. Forberedt erklæring, der ikke lader mig kalde $mysqli->stmt_init()

  2. Oracle INSERT i to tabeller i én forespørgsel

  3. Bedre forståelse - Class.forName(com.mysql.jdbc.Driver).newInstance ();

  4. hvad er den egentlige årsag til mysql fejl 1442?