sql >> Databasteknik >  >> RDS >> Mysql

Anslutningar är ibland inte tillgängliga i c3p0

Du har mycket troligt en anslutningsläcka. En gigantisk poolstorlek hjälper inte riktigt med det. Se här .

Bilaga:Robust Resource Cleanup idiom

Det är bäst när du kan använda prova med resurser . Men om du arbetar med en äldre version av Java (före Java 7), eller med resurser som inte implementerar AutoCloseable du kanske fortfarande måste återgå till den här typen av saker.

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(); }
}

Observera att finally-satsen definitivt kommer att köras om anslutningen förvärvas, och det finns en best-attempt close() för varje resurs:If or misslyckas med att stänga(), kommer det undantaget inte att förhindra försöket att stänga() anslutningen.

Man måste vara väldigt försiktig. Som Keynes berömt uttryckte det, det finns många glipor mellan koppen och läppen.




  1. Multitenancy-alternativ för PostgreSQL

  2. Hur lägger man till ett <br/> efter varje resultat, men inte det sista resultatet?

  3. ställ in PostgreSQL med Laravel i MAMP

  4. Installera webbserver i Windows XP med Apache2, PHP5 och MySQL4 – Del 1