Apache Commons Pool高级配置项详解
Commons Pool虽然是牛刀,不但要会用,更重要的是要用好,否则还不如不用,为此,必须掌握Commons Pool的高级参数配置,这是Commons Pool应用中非常重要的一个问题。
这些参数我以.properties文件的方式在自己的应用使用,但是,这并非Commons Pool所要求的,下面是我为可配置参数所写的一个properties文件,内容和注释如下:
pool.properties
#设置后进先出的池策略
lifo=true
#允许最大活动对象数
maxActive=24
#允许最大空闲对象数
maxIdle=6
#允许最大等待时间毫秒数
maxWait=150000
#被空闲对象回收器回收前在池中保持空闲状态的最小时间毫秒数
minEvictableIdleTimeMillis=100000
#允许最小空闲对象数
minIdle=0
#设定在进行后台对象清理时,每次检查对象数
numTestsPerEvictionRun=1
#指明是否在从池中取出对象前进行检验,如果检验失败,则从池中去除连接并尝试取出另一个.
testOnBorrow =false
#指明是否在归还到池中前进行检验
testOnReturn =false
#指明连接是否被空闲连接回收器(如果有)进行检验.如果检测失败,则连接将被从池中去除.
testWhileIdle=false
#在空闲连接回收器线程运行期间休眠的时间毫秒数. 如果设置为非正数,则不运行空闲连接回收器线程
timeBetweenEvictionRunsMillis=120000
#当池中对象用完时,请求新的对象所要执行的动作
whenExhaustedAction=1
实际上Commons Pool并不要求写这么个文件,对池的配置,Commons Pool也很随意,你不配置也能用。当然这个配置文件不能直接给Commons Pool使用,还需要自己读取每个元素的信息然后才能给pool来使用。
其实最好的方式是构建一个GenericKeyedObjectPool.Config的对象,将这个对象给pool来使用即可。
最简单的方法是:
GenericKeyedObjectPool.Config cfg = new GenericKeyedObjectPool.Config();
cfg.set.....(prop.get(....,defaultvalue));
....
有了cfg对象,再构建池时候,就简单了:
static
{
GenericKeyedObjectPool.Config cfg = new
GenericKeyedObjectPool.Config();
cfg.lifo = Boolean.valueOf(SysParamsToolkit.getProperty("lifo"
, "true
"
));
cfg.maxActive = Integer.valueOf(SysParamsToolkit.getProperty("maxActive"
, "18"
));
cfg.maxIdle = Integer.valueOf(SysParamsToolkit.getProperty("maxIdle"
, "6"
));
cfg.maxWait = Integer.valueOf(SysParamsToolkit.getProperty("maxWait"
, "150000"
));
cfg.minEvictableIdleTimeMillis = Integer.valueOf(SysParamsToolkit.getProperty("minEvictableIdleTimeMillis"
, "100000"
));
cfg.minIdle = Integer.valueOf(SysParamsToolkit.getProperty("minIdle"
, "0"
));
cfg.numTestsPerEvictionRun = Integer.valueOf(SysParamsToolkit.getProperty("numTestsPerEvictionRun"
, "1"
));
cfg.lifo = Boolean.valueOf(SysParamsToolkit.getProperty("testOnBorrow"
, "false
"
));
cfg.lifo = Boolean.valueOf(SysParamsToolkit.getProperty("testOnReturn"
, "false
"
));
cfg.lifo = Boolean.valueOf(SysParamsToolkit.getProperty("testWhileIdle"
, "false
"
));
cfg.timeBetweenEvictionRunsMillis = Integer.valueOf(SysParamsToolkit.getProperty("timeBetweenEvictionRunsMillis"
, "120000"
));
cfg.whenExhaustedAction = Byte.valueOf("whenExhaustedAction"
, 1);
pool = new
GenericKeyedObjectPool(new
BaseKeyedPoolableObjectFactory() {
@Override
public
Object makeObject(Object o) throws
Exception {
if
(o != null
&& o instanceof
Socket)
return
o;
else
return
null
;
}
}, cfg);
}
分享到:
相关推荐
Apache Commons Pool 2.4.1 是一个广泛使用的对象池库,主要在Java开发中用于高效管理资源。对象池的概念是创建一组预先配置的对象,而不是每次需要时都创建新的对象,这大大减少了对象的创建和销毁开销,提高了应用...
Apache Commons Pool2是一个Java对象池库,用于管理可重用对象。对象池是软件设计中的一个概念,通过池化资源,可以有效地减少创建和销毁对象的开销,提高系统的性能和效率。Apache Commons Pool2是Apache Commons...
Apache Commons Pool 2 是一个广泛使用的对象池库,它的最新版本是 2.5.0。对象池在软件设计中是一种优化资源管理的技术,通过复用已创建的对象,避免频繁的创建和销毁过程,从而提高性能。Apache Commons Pool 2 ...
标题中的"commo-pool, commons-pool commons-pool commons-pool"可能是由于输入错误,正确的应该是"Apache Commons Pool"。这个库在IT行业中尤其在服务器端编程和数据存储解决方案中扮演着重要角色,因为它可以帮助...
Apache Commons Pool2是Java开发中的一个对象池库,主要用于提高对象的重用效率,从而提升系统性能。在本文中,我们将深入探讨这个库的核心概念、设计模式以及如何通过源码学习来理解其工作原理。 首先,Apache ...
《Apache Commons Pool 2.8.1:高效对象池实现详解》 Apache Commons Pool 是一个广泛使用的开源组件,主要用于提供对象池化的实现。在Java世界里,对象池化是一种优化资源管理的重要技术,通过复用已创建的对象,...
《Apache Commons Pool与Tomcat8连接Redis的深入解析》 Apache Commons Pool库是Apache软件基金会的一个项目,专门用于提供对象池化的实现。在Java开发中,对象池化是一种优化资源管理的技术,它允许开发者创建一组...
标题中的"commons-pool-1.6.jar.zip"表明这是一个包含Apache Commons Pool 1.6版本的压缩文件,其中的核心组件是`commons-pool-1.6.jar`。 **Apache Commons Pool 概述** Apache Commons Pool 是Apache软件基金会的...
《Apache Commons Pool 2.10.0:高效对象池详解》 Apache Commons Pool 是一个广泛使用的开源组件,主要用于提供对象池化的实现。在Java世界里,对象池化是一种优化资源管理的重要技术,通过对象池可以减少频繁创建...
Apache Commons DBCP(数据库连接池)和Apache Commons Pool是两个在Java开发中广泛使用的开源库,主要用于管理和优化数据库连接的使用。这两个组件是高效、可靠的数据库操作背后的关键技术。 Apache Commons Pool...
Apache Commons Pool2是一个Java对象池库,用于管理资源的复用,特别是数据库连接池。在IT行业中,数据源管理是优化系统性能的关键部分,而Apache Commons Pool2则是实现这一目标的重要工具。本篇将深入探讨这个库的...
《Apache Commons Pool 1.5.5:Java对象池化框架详解》 Apache Commons Pool 是一个广泛使用的开源项目,提供了一种高效的对象池化服务。本篇将详细讲解Apache Commons Pool 1.5.5版本的核心特性、工作原理以及如何...
`commons-pool.jar` 是Apache Commons项目中的一个子项目,全称为Apache Commons Pool,它是一个通用的对象池服务库。对象池是一种设计模式,用于高效管理资源,尤其是那些创建和销毁开销较大的对象。通过对象池,...
Apache Commons DBCP(Database Connection Pool)和Apache Commons Pool是两个在Java开发中常用的开源库,主要用于数据库连接池管理和对象池服务。它们是Apache软件基金会的项目,为Java应用程序提供了高效且可配置...
The Apache Commons Pool open source software library provides an object-pooling API and a number of object pool implementations. Version 2 of Apache Commons Pool contains a completely re-written ...
Apache Commons Pool 1.6是Java开发中一个重要的工具库,专门用于对象池化服务。对象池化是一种优化资源管理的技术,它通过预先创建并维护一组可重用对象,避免了频繁的对象创建和销毁,从而提高了系统性能。在...
"commons-pool-1.6.jar" 这个文件名表明它是一个Java库,属于Apache Commons项目的一部分,具体是Apache Commons Pool 1.6版本。Apache Commons Pool是一个通用的对象池服务,它提供了一种有效管理对象资源的方式,...
Apache Commons Pool 是一个开源的Java对象池库,版本1.4是该项目的一个稳定版本。对象池的概念是为了提高性能和资源管理,通过复用已创建的对象而不是每次需要时都创建新的对象。在Java应用中,特别是在大型企业级...