`
rq2_79
  • 浏览: 234949 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Apache Commons Pool

    博客分类:
  • java
阅读更多
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

    Apache Commons Pool 2.4.1,编译 jedis 2.7.2 时候使用。

    Apache commons-pool2-2.5.0

    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 ...

    commons-pool:Apache Commons Pool的镜像

    或者,您可以从中央Maven存储库中提取它:< dependency> < groupId>org.apache.commons</ groupId> < artifactId>commons-pool2</ artifactId> < version>2.9.0</ version></ dependency>贡献我们通过GitHub接受...

    commons-pool2-sr:Apache Commons Pool原始代码剖析笔记

    commons-pool2-sr 开源剖析笔记

    commons-pool2-2.0-API文档-中文版.zip

    Maven坐标:org.apache.commons:commons-pool2:2.0; 标签:apache、commons、pool2、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,...

    commons-pool2-2.10.0-API文档-中文版.zip

    Maven坐标:org.apache.commons:commons-pool2:2.10.0; 标签:apache、commons、pool2、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译...

    Apache Commons 包的使用

    Apache Commons IO 功能是使用 Apache Commons Pool简介 Apache Commons DBCP使用

    commons-pool2-2.10.0-API文档-中英对照版.zip

    Maven坐标:org.apache.commons:commons-pool2:2.10.0; 标签:apache、pool2、commons、jar包、java、中英对照文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化...

    thriftpool:Thrift RPC连接池,java实现,基于apache commons pool

    储蓄池 Thrift RPC连接池,java实现,基于apache commons pool

    commons-pool2-2.5.0-API文档-中英对照版.zip

    对应Maven信息:groupId:org.apache.commons,artifactId:commons-pool2,version:2.5.0 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构...

    com.springsource.org.apache.commons.pool-sources-1.5.3.jar

    com.springsource.org.apache.commons.pool-sources-1.5.3.jar源码

    commons-pool2-2.3-API文档-中文版.zip

    Maven坐标:org.apache.commons:commons-pool2:2.3; 标签:apache、pool2、commons、jar包、java、API文档、中文版; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化...

    commons-pool2-2.4.3-API文档-中文版.zip

    Maven坐标:org.apache.commons:commons-pool2:2.4.3; 标签:apache、pool2、commons、jar包、java、中文文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,...

    apache-commons下源码大放送

    apache-commons下全部官方源码和官方API文档,其中有: commons-beanutils-1.8.0 commons-codec commons-collections commons-dbcp commons-dbutils commons-fileupload commons-io commons-lang commons-lang3 ...

    Apache commons-pool2-2.4.2源码学习笔记

    NULL 博文链接:https://aperise.iteye.com/blog/2399752

    apache commons 常用jar包 commons-validator commons-transaction commons-lang等

    jar包大小:60KB commons-pool-1.3.jar jar包大小:176KB commons-net-1.4.1.jar jar包大小:109KB commons-modeler-2.0.1.jar jar包大小:170KB commons-math-1.1.jar jar包大小:43KB commons-logging-api-1.1.jar jar...

    commons-pool2-2.9.0-API文档-中文版.zip

    Maven坐标:org.apache.commons:commons-pool2:2.9.0; 标签:apache、commons、pool2、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,...

    apache-commons源码及jar文件

    Apache Commons是一个非常有用的工具包,解决各种实际的通用问题。(附件中提供了该工具包的jar包,及源文件以供研究) BeanUtils Commons-BeanUtils 提供对 Java 反射和自省API的包装 Betwixt Betwixt提供将 ...

    commons-pool2-2.11.1-bin.zip

    DBCP(DataBase Connection Pool)是 apache common上的一个 java 连接池项目,也是 tomcat 使用的连接池组件,依赖 于Jakarta commons-pool 对象池机制,DBCP可以直接的在应用程序中使用。 使用DBCP会用到commons-...

    commons-pool

    所含包数:2个(org.apache.commons.pool和org.apache.commons.pool.impl) 所含类数:21个(其中有4个抽象类和6个接口) 适用平台:Java 2, Standard Edition. 单纯地使用Pool组件不需要太多的Java 2的知识和经验,...

Global site tag (gtag.js) - Google Analytics