The SharedPoolDataSource saves wrong password forever
1. Get a connection for user1 (use username of user1 and password of user1) ---> connection ok
2. Get a connection for user2 (use username of user2 and a wrong password) --> connection failed
3. Get a connection for user2 (use username of user2 and password of user2) --> connection will be failed too because the wrong password is stored in the usersKey map.
Bugfix
===================================================================
protected synchronized PooledConnectionAndInfo
getPooledConnectionAndInfo(String username, String password)
throws SQLException {
if (pool == null) {
try {
registerPool(username, password);
} catch (NamingException e) {
throw new SQLNestedException("RegisterPool failed", e);
}
}
PooledConnectionAndInfo info = null;
UserPassKey userPassKey = null;
try {
userPassKey = getUserPassKey(username, password);
info = (PooledConnectionAndInfo) pool
.borrowObject(userPassKey);
}
catch (Exception e) {
if (userKeys != null && userKeys.containsKey(username)) {
userKeys.remove(username);
}
throw new SQLNestedException(
"Could not retrieve connection info from pool", e);
}
return info;
}