我有一个数据库连接池。有消费者从该游泳池获取连接。 但我不能相信这些消费者,因为他们中的很多人都没有返回我的连接。因此游泳池挨饿,许多消费者被迫等待无限。 例如:消费者没有返回连接到我的数据库连接池
class Consumer{
void someMethod(){
Connection con=Pool.getConnection();
//some bloody steps which throws exception
con.goodBye();//giving back the connection to the pool
}
}
由于异常的,可能是因为傲慢的连接没有给予回复永远的。我无法限制消费者阶层使用Pool api。 (我没有办法强制消费者) 我相信这里没有傻瓜证明的解决方案(可能不是那么聪明)。任何人都可以想出一个很好的解决方案。 我得到的一个解决方案是检查消费者类是否发生任何异常,如果发生异常,然后完全收回连接力。
或者是否有任何新的革命性DBPool设计模式在这种典型场景中不是非常流行(即使我认为我的案例非常通用,任何人都可以忘记将连接还给池。 )
这比编程更为行政/管理问题。你无法解决世界上坐在隔间和编码中的所有麻烦。对于这一个,我会编制一个可怜的程序客户名单,并提出与他们的管理这个问题。 – 2012-02-08 13:31:28