S2DBCP
S2DBCPのConnectionPoolImpl$FreeItemはexpiredとdestroyが同時に呼び出されたときにうまくいかない場合がありますね。
次のバージョンで修正しますが、どうしても過去のバージョンを使う必要のある方は、つぎのように修正してください。m(_ _)m
ConnectionPoolImpl$FreeItem
public synchronized void expired() {
synchronized (freePool_) {
freePool_.remove(this);
}
if (timeoutTask_ != null) {
timeoutTask_.cancel();
timeoutTask_ = null;
}
if (connectionWrapper_ != null) {
connectionWrapper_.closeReally();
connectionWrapper_ = null;
}
}public synchronized void destroy() {
if (timeoutTask_ != null) {
timeoutTask_.cancel();
timeoutTask_ = null;
}
connectionWrapper_ = null;
}