2015-04-08 3 views
1

Я пытаюсь понять, что maxWait находится в org.apache.commons.dbcp.BasicDataSource. Documentation говорит, что это:Что такое maxWait в DBCP Apache?

Максимальное количество миллисекунд, что пул будет ждать (когда нет доступных соединений) для соединения должны быть возвращены, прежде чем бросать исключение или < = 0, чтобы ждать бесконечно ,

Но я все еще не могу понять. Я попытался это сделать, но мои сомнения только увеличились.

Я вижу два способа интерпретации этого определения:

  1. maxWait является максимальным количеством миллисекунд, приложение, которое использует этот пул будет ждать до тех пор, пока не получит исключение, если пул не имеет свободные соединения с вернуться в приложение. То есть если у пула нет свободных приложений, приложение будет ждать такого количества времени для нового соединения, пока оно не получит исключение.
  2. maxWait - максимальное количество миллисекунд, которое может быть открыто. Если такое соединение не закрывается на этот промежуток времени, пул вызовет исключение.

Пожалуйста, помогите мне понять, какое утверждение верно. Или может быть какое-то другое определение :)

ответ

7

maxWait должно быть временем, когда ваш звонок для получения соединения будет ждать в пуле до того, как будет выбрано исключение, когда все соединения в данный момент заняты.

Поведение, о котором вы описываете в # 2, похоже, является заброшенным тайм-аутом в журнале, в течение которого соединение может быть сдано в аренду до того, как пул решит, что он был оставлен (не закрыт, что просто вернет его в пул вместо фактически закрывая его.)

Отъезд http://commons.apache.org/proper/commons-dbcp/configuration.html, чтобы увидеть заброшенные настройки, на которые я имею в виду.

Смежные вопросы