sql >> Databasteknik >  >> RDS >> PostgreSQL

tomcat 7 JDBC-anslutningspool - separat pool för varje databas?

Okej, jag grävde lite och kom på det här själv. (Tack för de många snälla människorna på e-postlistan för Tomcat-användare!)

JB Nizet har rätt:om du skapar Tomcat-databasanslutningspooler från Java-kod, är/representerar varje DataSource du instansierar bokstavligen en separat anslutningspool. Detta var förvånande för mig; från en .NET-bakgrund antog jag att Tomcat-anslutningspoolningen skulle fungera som SqlServer/ADO.NET-anslutningspooling:om du använder två identiska anslutningssträngar för att få två databasanslutningar kommer dessa båda från samma anslutningspool. Men i Tomcat, när DataSource-objekt instansieras från Java-kod, är varje ny DataSource-instans en helt ny anslutningspool. Så om du till exempel vill behålla dessa anslutningspooler över JAX-RS webbtjänstanrop, måste du bygga din egen databaspool (DataSource) cache, lägga in DataSource-instanserna (en per databas) i den och lagra den i ett objekt som JAX-RS kommer att bestå över webbtjänstanrop. Jag gjorde precis det här, och det fungerar bra.

btw, Tomcat-databasanslutningspooling erbjuder funktionalitet som liknar SqlServer/ADO.NET-anslutningspooling, du behöver bara använda JNDI-resurser för att skapa dina DataSource-instanser. (I mitt fall är detta inte ett alternativ, eftersom databaser skapas dynamiskt i min applikation, och JNDI-definitioner skapas vanligtvis från konfigurationsfiler som Tomcat läser vid start.)




  1. Infoga sekvensnummer i MySQL

  2. hur man tolkar json med json_populate_recordset i postgres

  3. Grails:ändrar dataSource-url vid körning för att uppnå databasseparation med flera klienter

  4. Dense_rank första Oracle till Postgresql konvertera