Oke, saya melakukan penggalian dan menemukan ini sendiri. (Terima kasih untuk banyak orang baik di milis pengguna Tomcat!)
JB Nizet benar:jika Anda membuat kumpulan koneksi database Tomcat dari kode Java, setiap DataSource yang Anda buat secara harfiah adalah/mewakili kumpulan koneksi yang terpisah. Ini mengejutkan saya; berasal dari latar belakang .NET, saya berasumsi bahwa kumpulan koneksi Tomcat akan berfungsi seperti kumpulan koneksi SqlServer/ADO.NET:jika Anda menggunakan dua string koneksi yang identik untuk mendapatkan dua koneksi database, keduanya akan berasal dari kumpulan koneksi yang sama. Namun, di Tomcat, saat membuat instance objek DataSource dari kode Java, setiap instance DataSource baru adalah kumpulan koneksi yang sama sekali baru. Jadi, jika Anda ingin mempertahankan kumpulan koneksi ini di seluruh panggilan layanan web JAX-RS, misalnya, Anda perlu membuat cache kumpulan database (DataSource) Anda sendiri, memasukkan instans DataSource (satu per database) ke dalamnya, dan menyimpannya dalam objek yang JAX-RS akan bertahan di seluruh panggilan layanan web. Saya baru saja melakukan ini, dan ini berfungsi dengan baik.
btw, penggabungan koneksi database Tomcat memang menawarkan fungsionalitas yang mirip dengan penggabungan koneksi SqlServer/ADO.NET, Anda hanya perlu menggunakan sumber daya JNDI untuk membuat instance DataSource Anda. (Dalam kasus saya ini bukan pilihan, karena database dibuat secara dinamis di aplikasi saya, dan definisi JNDI umumnya dibuat dari file konfigurasi yang dibaca Tomcat saat startup.)