Apache DBCP中的maxWait是什么?

时间:2015-04-08 16:52:04

标签: java apache-commons-dbcp

我正在尝试了解org.apache.commons.dbcp.BasicDataSource中的 maxWait Documentation说它是:

  

池将等待的最大毫秒数(当时存在   没有可用的连接)以便之前返回连接   抛出异常,或< = 0无限期等待。

但是我仍然无法理解。我试图谷歌,但我的怀疑只是增加了。

我看到两种解释这个定义的方法:

  1. maxWait是使用此池的应用程序在获得异常之前等待的最大毫秒数(如果池没有可用于返回应用程序的空闲连接)。即如果池没有空闲连接,应用程序将等待新连接的这段时间,直到它出现异常。
  2. maxWait是可以打开连接的最大毫秒数。如果此类连接未在这段时间内关闭,则池将引发异常。
  3. 请帮助我理解哪个陈述是真的。 或者可能还有其他定义:)

1 个答案:

答案 0 :(得分:8)

maxWait应该是在所有连接当前正忙的情况下抛出异常之前,获取连接的呼叫将在池中等待的时间。

您在#2中描述的行为似乎是日志放弃超时,这是在池决定放弃连接之前可以租用连接的时间(未关闭,这只会将其返回到池而不是实际上关闭它。)

查看http://commons.apache.org/proper/commons-dbcp/configuration.html以查看我所指的废弃设置。