Được rồi, tôi đã tìm hiểu kỹ và tự mình tìm ra điều này. (Cảm ơn rất nhiều người tốt bụng trong danh sách gửi thư của người dùng tomcat!)
JB Nizet đã đúng:nếu bạn đang tạo nhóm kết nối cơ sở dữ liệu Tomcat từ mã Java, mỗi DataSource mà bạn khởi tạo theo nghĩa đen là / đại diện cho một nhóm kết nối riêng biệt. Điều này thật đáng ngạc nhiên đối với tôi; đến từ nền .NET, tôi đã giả định rằng gộp kết nối Tomcat sẽ hoạt động giống như gộp kết nối SqlServer / ADO.NET:nếu bạn sử dụng hai chuỗi kết nối giống nhau để có hai kết nối cơ sở dữ liệu, cả hai sẽ đến từ cùng một nhóm kết nối. Tuy nhiên, trong Tomcat, khi khởi tạo các đối tượng DataSource từ mã Java, mỗi cá thể DataSource mới là một nhóm kết nối hoàn toàn mới. Vì vậy, nếu bạn muốn duy trì các nhóm kết nối này trên các lệnh gọi dịch vụ web JAX-RS, chẳng hạn, bạn cần phải xây dựng bộ nhớ đệm nhóm cơ sở dữ liệu (DataSource) của riêng mình, đặt các phiên bản DataSource (mỗi cá thể một cơ sở dữ liệu) vào đó và lưu trữ nó. trong một đối tượng mà JAX-RS sẽ tồn tại qua các cuộc gọi dịch vụ web. Tôi vừa làm điều này và nó đang hoạt động tốt.
btw, gộp kết nối cơ sở dữ liệu Tomcat cung cấp chức năng tương tự như gộp kết nối SqlServer / ADO.NET, bạn chỉ cần sử dụng tài nguyên JNDI để tạo các phiên bản DataSource của mình. (Trong trường hợp của tôi, đây không phải là một tùy chọn, vì cơ sở dữ liệu được tạo động trong ứng dụng của tôi và các định nghĩa JNDI thường được tạo từ các tệp cấu hình mà Tomcat đọc khi khởi động.)