PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

tomcat 7 pool de connexions JDBC - pool séparé pour chaque base de données ?

D'accord, j'ai fait quelques recherches et j'ai compris cela moi-même. (Merci pour les nombreuses personnes aimables sur la liste de diffusion tomcat-users !)

JB Nizet a raison :si vous créez des pools de connexion à la base de données Tomcat à partir de code Java, chaque DataSource que vous instanciez littéralement est/représente un pool de connexion séparé. Cela m'a surpris; venant d'un arrière-plan .NET, j'ai supposé que le regroupement de connexions Tomcat fonctionnerait comme le regroupement de connexions SqlServer/ADO.NET :si vous utilisez deux chaînes de connexion identiques pour obtenir deux connexions de base de données, celles-ci proviendront toutes deux du même pool de connexions. Cependant, dans Tomcat, lors de l'instanciation d'objets DataSource à partir de code Java, chaque nouvelle instance DataSource est un tout nouveau pool de connexions. Ainsi, si vous souhaitez conserver ces pools de connexions sur les appels de service Web JAX-RS, par exemple, vous devez créer votre propre cache de pool de bases de données (DataSource), y placer les instances DataSource (une par base de données) et le stocker. dans un objet que JAX-RS persistera à travers les appels de service Web. Je viens de le faire et ça marche bien.

btw, le regroupement de connexions de base de données Tomcat offre des fonctionnalités similaires au regroupement de connexions SqlServer/ADO.NET, il vous suffit d'utiliser les ressources JNDI pour créer vos instances DataSource. (Dans mon cas, ce n'est pas une option, car les bases de données sont créées dynamiquement dans mon application et les définitions JNDI sont généralement créées à partir de fichiers de configuration que Tomcat lit au démarrage.)