`

apache commons-pool的配置参数

    博客分类:
  • JAVA
阅读更多

apache commons-pool的配置参数

write by yinmingjun,引用请注明。

 

最近在研究jedis,jedis的对象池是借助于apache的commons-pool实现的,发现关于commons-pool的文档真的很少,也许是大家都觉得commons-pool足够简单吧,不需要一个文档来描述。

 

看 了一下commons-pool的代码,写的真的很好,在java社区总是有这么一些人,在做无私的奉献,很佩服。在空闲之余,写一下commons- pool的配置说明,帮助那些只是希望简单理解或使用commons-pool的同学,知道如何配置commons-pool。

 

本文基于apache commons-pool-1.5.5。

 

对pool的配置一般是通过org.apache.commons.pool.impl.GenericObjectPool.Config来完成,这是个简单的数值对象,每个成员都预设了默认值,这里我们详细的介绍一下里面的各个成员的含义。

 

maxActive

控制池中对象的最大数量。

默认值是8,如果是负值表示没限制。

 

maxIdle

控制池中空闲的对象的最大数量。

默认值是8,如果是负值表示没限制。

 

minIdle

控制池中空闲的对象的最小数量。

默认值是0

 

whenExhaustedAction

指定池中对象被消耗完以后的行为,有下面这些选择:

  • WHEN_EXHAUSTED_FAIL                  0

  • WHEN_EXHAUSTED_GROW             2

  • WHEN_EXHAUSTED_BLOCK             1

 

如果是WHEN_EXHAUSTED_FAIL,当池中对象达到上限以后,继续borrowObject会抛出NoSuchElementException异常。

如果是WHEN_EXHAUSTED_GROW,当池中对象达到上限以后,会创建一个新对象,并返回它。

如果是WHEN_EXHAUSTED_BLOCK,当池中对象达到上限以后,会一直等待,直到有一个对象可用。这个行为还与maxWait有关,如果maxWait是正数,那么会等待maxWait的毫秒的时间,超时会抛出NoSuchElementException异常;如果maxWait为负值,会永久等待。

 

whenExhaustedAction 的默认值是WHEN_EXHAUSTED_BLOCKmaxWait的默认值是-1

 

maxWait

whenExhaustedAction 如果是WHEN_EXHAUSTED_BLOCK,指定等待的毫秒数。如果maxWait是正数,那么会等待maxWait的毫秒的时间,超时会抛出NoSuchElementException异常;如果maxWait为负值,会永久等待。

maxWait的默认值是-1

 

testOnBorrow

如果testOnBorrow被设置,pool会在borrowObject返回对象之前使用PoolableObjectFactoryvalidateObject来验证这个对象是否有效,要是对象没通过验证,这个对象会被丢弃,然后重新选择一个新的对象。

 

testOnBorrow的默认值是false

 

testOnReturn

如果testOnReturn被设置,pool会在returnObject的时候通过PoolableObjectFactoryvalidateObject方法验证对象,如果对象没通过验证,对象会被丢弃,不会被放到池中。

 

testOnReturn的默认值是false

 

testWhileIdle

指定idle对象是否应该使用PoolableObjectFactoryvalidateObject校验,如果校验失败,这个对象会从对象池中被清除。

这个设置仅在timeBetweenEvictionRunsMillis被设置成正值(>0)的时候才会生效。

testWhileIdle的默认值是false

 

timeBetweenEvictionRunsMillis

指定驱逐线程的休眠时间。如果这个值不是正数(>0),不会有驱逐线程运行。

timeBetweenEvictionRunsMillis的默认值是-1

 

numTestsPerEvictionRun

设置驱逐线程每次检测对象的数量。

这个设置仅在timeBetweenEvictionRunsMillis被设置成正值(>0)的时候才会生效。

numTestsPerEvictionRun的默认值是3

 

minEvictableIdleTimeMillis

指定最小的空闲驱逐的时间间隔(空闲超过指定的时间的对象,会被清除掉)。

这个设置仅在timeBetweenEvictionRunsMillis被设置成正值(>0)的时候才会生效。

minEvictableIdleTimeMillis默认值是30分钟。

 

softMinEvictableIdleTimeMillis

minEvictableIdleTimeMillis类似,也是指定最小的空闲驱逐的时间间隔(空闲超过指定的时间的对象,会被清除掉),不过会参考minIdle的值,只有idle对象的数量超过minIdle的值,对象才会被清除。

这个设置仅在timeBetweenEvictionRunsMillis被设置成正值(>0)的时候才会生效,并且这个配置能被minEvictableIdleTimeMillis配置取代(minEvictableIdleTimeMillis配置项的优先级更高)。

softMinEvictableIdleTimeMillis的默认值是-1

 

lifo

pool可以被配置成LIFO队列(last-in-first-out)或FIFO队列(first-in-first-out),来指定空闲对象被使用的次序。

lifo的默认值是true

分享到:
评论

相关推荐

    commo-pool, commons-pool commons-pool commons-pool

    标题中的"commo-pool, commons-pool commons-pool commons-pool"可能是由于输入错误,正确的应该是"Apache Commons Pool"。这个库在IT行业中尤其在服务器端编程和数据存储解决方案中扮演着重要角色,因为它可以帮助...

    commons-dbcp-1.4.jar和commons-pool-1.5.6.jar

    Apache Commons DBCP(Database Connection Pool)和Apache Commons Pool是两个在Java开发中广泛使用的开源库,主要用于数据库连接管理和对象池服务。这两个JAR文件,`commons-dbcp-1.4.jar` 和 `commons-pool-1.5.6...

    commons-dbcp-1.2.1.jar + commons-pool-1.4.jar + commons-collections-3.2.jar

    这个库在DBCP中可能用于辅助处理数据结构,例如存储和操作连接池中的数据库连接,或者在处理配置参数时提供更灵活的数据结构支持。 这些库的协同工作方式如下: - 当应用启动时,DBCP会根据配置初始化一个数据库...

    commons-pool 等jar包

    DBCP(Database Connection Pool)是Apache Jakarta项目中的一个子项目,它利用了commons-pool对象池机制来实现数据库连接的复用,从而减少创建和释放数据库连接时的开销。Tomcat,一个广泛使用的Java应用服务器,...

    commons-pool2-2.8.1.jar

    总结起来,Apache Commons Pool 2.8.1.jar是Java开发中一个强大且灵活的对象池实现,它提供了多种配置选项和策略,能够帮助开发者有效地管理资源,提高系统的运行效率。通过深入理解和使用,我们可以将这一工具的...

    commons-pool-1.6.jar.zip

    Apache Commons Pool 是一个Java对象池库,主要用于提供各种对象池实现,以便在多个请求之间复用对象,从而提高性能和减少资源消耗。...正确配置和使用Apache Commons Pool,可以有效地减少系统开销,优化应用性能。

    commons-pool2-2.4.2.jar

    Apache Commons Pool2是一个Java对象池库,用于管理资源对象,如数据库连接或网络套接字。这个库的主要目的是提高性能和资源效率,...了解并正确配置Apache Commons Pool2,有助于开发者构建更加健壮、高效的Java应用。

    commons-pool2-2.6.0 jar包

    Apache Commons Pool2是一个通用的对象池服务,它提供了一个框架,用于创建可复用对象池。对象池设计的主要目标是减少频繁创建和销毁对象的开销,这对于那些创建和初始化成本较高的对象尤其有益。Pool2库提供了基础...

    commons-pool2-2.6.0-bin.zip

    然后,使用这个工厂实例和配置参数来创建一个对象池实例。一旦有了对象池,就可以通过`borrowObject()`方法获取一个对象,使用完毕后通过`returnObject()`方法归还到池中。 总结起来,Apache Commons Pool2是一个...

    jedis-3.2.0.jar + commons-pool2-2.6.2.jar

    标题中的"jedis-3.2.0.jar + commons-pool2-2.6.2.jar"提到了两个关键的Java库:Jedis和Apache Commons Pool2。Jedis是Java编程语言中广泛使用的Redis客户端,而Apache Commons Pool2则是一个对象池实现,用于有效地...

    commons-dbcp-1.2.2.jar和commons-pool-1.3.jar包

    4. **连接配置**:开发者可以通过配置参数,如最大连接数、最小连接数、超时设置等,来定制连接池的行为。 接下来,Apache Commons Pool是一个通用的对象池服务,它是DBCP内部依赖的基础组件。对象池是一种设计模式...

    commons-dbcp-1.4和commons-pool-1.6驱动包下载(亲测可用)

    2. 连接池的配置:可以通过配置参数调整连接池的大小、超时时间、空闲检查频率等。 3. 连接生命周期管理:支持连接的初始化和销毁,以及在分配给客户端前后的验证。 4. 事务支持:允许在连接池中开启和关闭事务。 5....

    commons-pool-1.6.jar

    5. **PoolConfig**: 配置参数,如最大连接数、最小连接数、超时时间等。 **DBCP的工作流程** 1. 应用程序请求数据库连接。 2. DBCP从连接池中获取一个空闲的连接,如果没有,则等待或创建新的连接。 3. 应用程序...

    jedis-2.7.2 + commons-pool2-2.3.rar

    在给定的压缩包"jedis-2.7.2 + commons-pool2-2.3.rar"中,包含的是Jedis 2.7.2版本和Apache Commons Pool 2.3版本,这两个组件是协同工作以提高Redis连接管理效率的关键。 **Jedis 2.7.2**: Jedis 2.7.2是Jedis的...

    commons-dbcp-1.2.2.jar &commons-pool-1.3.jar

    在本话题中,我们将探讨两个重要的开源库:`commons-dbcp`和`commons-pool`,以及它们在配置DataSource时的作用,特别是在Tomcat服务器中的应用,以及与Struts框架配置的相关性。 `commons-dbcp`(Apache Commons ...

    jedis-2.9.0+commons-pool2-2.4.2redis依赖包

    标题中的"jedis-2.9.0+commons-pool2-2.4.2redis依赖包"指的是一款基于Java实现的Redis客户端库Jedis的2.9.0版本,与Apache Commons Pool 2.4.2版本相结合的依赖包。这个组合主要用于优化Redis连接池管理,提高应用...

    commons-beanutils.jar commons-collections-3.1.jar commons-pool-1.2.jar

    - **池配置(Pool Configuration)**: 允许设置池的大小、超时策略等参数,以优化性能和资源使用。 - **对象生命周期管理(Object Life-cycle Management)**: 包括对象的初始化、验证、激活、钝化等过程,确保对象...

    commons-pool commons-dbcp

    在Apache Commons Pool 1.6版本中,它提供了基本的对象池服务,包括对象生命周期管理、池配置以及各种策略来控制对象的分配和回收。 Apache Commons DBCP(Database Connection Pool)则是在Apache Commons Pool之...

    commons-pool2-2.4.2和jedis-2.7.2

    `commons-pool2-2.4.2.jar`是Apache Commons Pool 2的实现,这是一个对象池设计模式的库。对象池是用于管理资源,如数据库连接或线程,以提高性能和效率的机制。在Java中,当频繁创建和销毁对象时,这可能导致大量的...

Global site tag (gtag.js) - Google Analytics