sql >> Database >  >> RDS >> PostgreSQL

tomcat 7 JDBC-verbindingspool - afzonderlijke pool voor elke database?

Oké, ik heb wat gegraven en heb dit zelf bedacht. (Bedankt voor de vele aardige mensen op de tomcat-users mailinglijst!)

JB Nizet heeft gelijk:als je Tomcat-databaseverbindingspools maakt op basis van Java-code, is/vertegenwoordigt elke DataSource die je aanmaakt letterlijk een afzonderlijke verbindingspool. Dit was verrassend voor mij; afkomstig van een .NET-achtergrond, ging ik ervan uit dat de Tomcat-verbindingspooling zou werken als SqlServer/ADO.NET-verbindingspooling:als u twee identieke verbindingsreeksen gebruikt om twee databaseverbindingen te krijgen, komen deze beide uit dezelfde verbindingspool. In Tomcat is elke nieuwe DataSource-instantie bij het instantiëren van DataSource-objecten uit Java-code echter een geheel nieuwe verbindingspool. Dus als u deze verbindingspools wilt behouden voor bijvoorbeeld JAX-RS-webserviceaanroepen, moet u uw eigen databasepool (DataSource) -cache bouwen, de DataSource-instanties (één per database) erin plaatsen en opslaan in een object dat JAX-RS blijft bestaan ​​tijdens webservice-aanroepen. Ik heb dit zojuist gedaan en het werkt prima.

btw, Tomcat-databaseverbindingspooling biedt functionaliteit die vergelijkbaar is met SqlServer/ADO.NET-verbindingspooling, u hoeft alleen JNDI-bronnen te gebruiken om uw DataSource-instanties te maken. (In mijn geval is dit geen optie, aangezien databases dynamisch worden aangemaakt in mijn toepassing en JNDI-definities over het algemeen worden gemaakt op basis van configuratiebestanden die Tomcat bij het opstarten leest.)




  1. Hoe kan ik WHERE 1 emuleren in een dynamische query?

  2. 2e generatie Google cloud SQL - App Engine

  3. Kan iemand uitleggen hoe Postgresql-rollen, Postgresql-gebruikers en Linux-gebruikers zich tot elkaar verhouden?

  4. Hoe het gegevenstype van de mysql-tabelkolommen te krijgen?