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.)