Okay, jeg gravede lidt og fandt ud af det selv. (Tak for de mange venlige mennesker på tomcat-brugernes mailingliste!)
JB Nizet har ret:Hvis du opretter Tomcat-databaseforbindelsespuljer fra Java-kode, er/repræsenterer hver DataSource, du instanserer, bogstaveligt talt en separat forbindelsespulje. Dette var overraskende for mig; kommer fra en .NET-baggrund, antog jeg, at Tomcat-forbindelsespooling ville fungere som SqlServer/ADO.NET-forbindelsespooling:hvis du bruger to identiske forbindelsesstrenge til at få to databaseforbindelser, vil disse begge komme fra den samme forbindelsespulje. Men i Tomcat, når DataSource-objekter instansieres fra Java-kode, er hver ny DataSource-instans en helt ny forbindelsespulje. Så hvis du vil bevare disse forbindelsespuljer på tværs af JAX-RS-webservicekald, skal du for eksempel bygge din egen database-pool (DataSource) cache, lægge DataSource-forekomsterne (én pr. database) ind i den og gemme den i et objekt, som JAX-RS vil bestå på tværs af webservicekald. Jeg har lige gjort dette, og det fungerer fint.
BTW, Tomcat-databaseforbindelsespooling tilbyder funktionalitet svarende til SqlServer/ADO.NET-forbindelsespooling, du skal bare bruge JNDI-ressourcer til at oprette dine DataSource-instanser. (I mit tilfælde er dette ikke en mulighed, da databaser oprettes dynamisk i min applikation, og JNDI-definitioner er generelt oprettet ud fra konfigurationsfiler, som Tomcat læser ved opstart.)