阿帕奇百科全书pools2有AbandonedConfig,有助于放弃借用的对象,如果他们不与“removeAbandonedTimeout”定义的时间返回。
实施例:
AbandonedConfig abandonedConfig = new AbandonedConfig();
abandonedConfig.setRemoveAbandonedTimeout(evictAbandonedTime); // in seconds
abandonedConfig.setRemoveAbandonedOnBorrow(true); // on borrow, test when pool is starving
abandonedConfig.setRemoveAbandonedOnMaintenance(true); // and test pool when evicting
pool.setAbandonedConfig(abandonedConfig);
然而,AbandonedConfig是只适用于GenericObjectPool和NOT GenericKeyedObjectPoolConfig。
在common2 pool2中实现这一点的唯一方式,可能是粗糙的方法是,在GenericKeyedObjectPool中的一个键下使用多个GenericObjectPool实例(在其池中只有一个对象),并使用AbandonedConfig设置GenericObjectPool。
我讨厌这个解决方案的事情是做两次借,但在光明的一面,第二次借款永远不会需要时间。