此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring LDAP 3.2.4

如果连接引发被视为非暂时性的异常,则连接将自动失效。例如,如果实例抛出 ,则会将其解释为非暂时性错误,并且实例将自动失效,而不会产生额外操作的开销。解释为非暂时性的异常是使用 的属性配置的。DirContextjavax.naming.CommunicationExceptiontestOnReturnnonTransientExceptionsPoolingContextSource
表 1.池化配置属性
属性 违约 描述

max-active

8

可以同时从此池分配的每种类型(只读或读写)的最大活动连接数。您可以使用非正数表示无限制。

max-total

-1

可以同时从此池分配的活动连接总数(对于所有类型)。您可以使用非正数表示无限制。

max-idle

8

每种类型(只读或读写)的最大活动连接数,这些连接可以在池中保持空闲状态,而不会释放额外的连接。您可以使用非正数表示无限制。

min-idle

0

每种类型(只读或读写)的最小活动连接数,这些连接可以在池中保持空闲状态,而无需创建额外的连接。您可以使用零(默认值)创建无。

max-wait

-1

池在引发异常之前等待返回连接的最大毫秒数(当没有可用连接时)。您可以使用非正数无限期等待。

when-exhausted

BLOCK

指定池耗尽时的行为。

  • 当池用完时,将抛出该选项。FAILNoSuchElementException

  • 该选项将等待,直到有新对象可用。如果为正数,并且在时间到期后没有新对象可用,则抛出。BLOCKmax-waitmax-waitNoSuchElementException

  • 该选项创建并返回一个新对象(实质上使无意义)。GROWmax-active

test-on-borrow

false

在从池中借用对象之前是否经过验证。如果对象无法验证,则会将其从池中删除,并尝试借用另一个对象。

test-on-return

false

对象在返回到池之前是否经过验证。

test-while-idle

false

对象是否由空闲对象驱逐器(如果有)验证。如果对象无法验证,则会将其从池中删除。

eviction-run-interval-millis

-1

空闲对象 evic 线程运行之间休眠的毫秒数。当为非正数时,不会运行空闲对象 erouter 线程。

tests-per-eviction-run

3

每次运行空闲对象 evic 线程期间要检查的对象数(如果有)。

min-evictable-time-millis

1000 * 60 * 30(30分钟)

在空闲对象驱逐者(如果有)逐出对象之前,对象可以在池中闲置的最短时间。

validation-query-base

LdapUtils.emptyName()

验证连接时要使用的搜索库。仅当指定了 、 或 时才使用。test-on-borrowtest-on-returntest-while-idle

validation-query-filter

objectclass=*

验证连接时要使用的搜索筛选器。仅当指定了 、 或 时才使用。test-on-borrowtest-on-returntest-while-idle

validation-query-search-controls-ref

null;默认搜索控件设置如上所述。

验证连接时要使用的实例的 ID。仅当指定了 、 、 或 时才使用。SearchControlstest-on-borrowtest-on-returntest-while-idle

non-transient-exceptions

javax.naming.CommunicationException

以逗号分隔的类列表。列出的例外情况在急促失效方面被视为非暂时性。如果对池实例的调用引发了列出的任何异常(或其子类),则该对象将自动失效,而无需任何其他 testOnReturn 操作。ExceptionDirContext

表 2.池化配置属性
属性 违约 描述

max-total

-1

可以同时从此池分配的活动连接总数(对于所有类型)。您可以使用非正数表示无限制。

max-total-per-key

8

每个键对池(签出或空闲)分配的对象实例数的限制。当达到限制时,子池将耗尽。负值表示无限制。

max-idle-per-key

8

每种类型(只读或读写)的最大活动连接数,这些连接可以在池中保持空闲状态,而不会释放额外的连接。负值表示无限制。

min-idle-per-key

0

每种类型(只读或读写)的最小活动连接数,这些连接可以在池中保持空闲状态,而无需创建额外的连接。您可以使用零(默认值)创建无。

max-wait

-1

池在引发异常之前等待返回连接的最大毫秒数(当没有可用连接时)。您可以使用非正数无限期等待。

block-when-exhausted

true

是否等到新对象可用。如果 max-wait 为正数,则在时间到期后没有新对象可用时抛出 a。NoSuchElementExceptionmaxWait

test-on-create

false

在借用之前是否验证对象。如果对象验证失败,则借用失败。

test-on-borrow

false

指示对象在从池中借用之前是否经过验证。如果对象无法验证,则会将其从池中删除,并尝试借用另一个对象。

test-on-return

false

指示对象在返回到池之前是否经过验证。

test-while-idle

false

用于指示对象是否由空闲对象 eprinter(如果有)验证对象。如果对象无法验证,则会将其从池中删除。

eviction-run-interval-millis

-1

空闲对象 evic 线程运行之间休眠的毫秒数。当为非正数时,不会运行空闲对象 erouter 线程。

tests-per-eviction-run

3

每次运行空闲对象 evic 线程期间要检查的对象数(如果有)。

min-evictable-time-millis

1000 * 60 * 30(30分钟)

在空闲对象驱逐者(如果有)逐出对象之前,对象可以在池中闲置的最短时间。

soft-min-evictable-time-millis

-1

在空闲对象逐出之前,对象在池中处于空闲状态的最短时间,但额外的条件是每个键至少保留在池中的最小对象实例数。如果此设置设置为正值,则此设置将被覆盖。min-evictable-time-millis

eviction-policy-class

org.apache.commons.pool2.impl.DefaultEvictionPolicy

此池使用的逐出策略实现。池尝试使用线程上下文类加载器加载类。如果失败,池将尝试使用加载此类的类装入器加载类。

fairness

false

池为等待公平借用连接的线程提供服务。 表示等待线程的服务就像在 FIFO 队列中等待一样。true

jmx-enable

true

JMX 已通过池的平台 MBean 服务器启用。

jmx-name-base

null

用作分配给启用了 JMX 的池的名称的一部分的 JMX 名称库。

jmx-name-prefix

pool

JMX 名称前缀,用作分配给启用了 JMX 的池的名称的一部分。

lifo

true

用于指示池是否具有相对于空闲对象的 LIFO(后进先出)行为或作为 FIFO(先进先出)队列的指标。LIFO 始终从池中返回最近使用的对象,而 FIFO 始终返回空闲对象池中最早的对象

validation-query-base

LdapUtils.emptyPath()

用于验证搜索的基本 DN。

validation-query-filter

objectclass=*

用于验证查询的筛选器。

validation-query-search-controls-ref

null;默认搜索控件设置如上所述。

验证连接时要使用的实例的 ID。仅当指定了 、 或 时才使用SearchControlstest-on-borrowtest-on-returntest-while-idle

non-transient-exceptions

javax.naming.CommunicationException

以逗号分隔的类列表。列出的例外情况在急促失效方面被视为非暂时性。如果对池实例的调用引发了列出的任何异常(或其子类),则该对象将自动失效,而无需任何其他 testOnReturn 操作。ExceptionDirContext