It sounds like you have the wrong end of the stick.
Pooling should not be in your jdbc driver/connection factory, that breaks the contract.
It is possible to pass the user through to the jdbc driver/connection factory
if you use the CallerIdentityLoginModule (if you use the servlet/ejb user/password)
or set <application-managed-security/> (if the user/password are passed as
parameters on getConnection())
This will create separate subpools for each user.