ひがやすを技術ブログ

電通国際情報サービスのプログラマ

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;
}