Bạn không thực sự sử dụng một nhóm kết nối. Một ConnectionPoolDataSource
không nhằm mục đích sử dụng trực tiếp. Nó được thiết kế như một DataSource
(đặc biệt) cho PooledConnection
các đối tượng sau đó được giữ trong một nhóm kết nối bởi DataSource
(bình thường) triển khai cung cấp tổng hợp kết nối.
Một nhà phát triển bình thường không nên sử dụng ConnectionPoolDataSource
trực tiếp, nó được thiết kế để sử dụng với các nhóm kết nối do Máy chủ ứng dụng cung cấp hoặc được gói vào mục đích chung DataSource
đã cung cấp tổng hợp kết nối.
Khi một Connection
được yêu cầu từ nhóm kết nối, nó sẽ kiểm tra một PooledConnection
hiện có (hoặc yêu cầu một cái mới từ ConnectionPoolDataSource
của nó ), truy xuất Connection
và trả lại cho người dùng. Khi người dùng đóng Connection
, PooledConnection
sẽ báo hiệu nhóm kết nối rằng nó đã khả dụng trở lại.
Trong trường hợp này, bạn đang tạo một PooledConnection
, truy xuất Connection
từ nó và sau đó loại bỏ PooledConnection
. Điều này có nghĩa là PooledConnection
bị loại bỏ và kết nối vật lý của nó với cơ sở dữ liệu không thể được sử dụng lại và sẽ bị đóng / loại bỏ khi cuối cùng nó được thu gom rác (thông thường khi nhóm kết nối muốn đóng kết nối vật lý, nó sẽ gọi close()
trên PooledConnection
).
Bạn cần sử dụng nhóm kết nối do Máy chủ ứng dụng của bạn cung cấp hoặc sử dụng nhóm kết nối cho mục đích chung như DBCP, c3p0 hoặc BoneCP.