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); 
        }
 
 本文转自 leizhimin 51CTO博客,原文链接:http://blog.51cto.com/lavasoft/218354,如需转载请自行联系原作者
相关文章
|
Apache
java.lang.NoClassDefFoundError: org/apache/commons/io/output/UnsynchronizedByteArrayOutputStream
java.lang.NoClassDefFoundError: org/apache/commons/io/output/UnsynchronizedByteArrayOutputStream
744 0
|
7月前
|
Java 数据库连接 Apache
深入理解Apache Commons Pool2池化技术
深入理解Apache Commons Pool2池化技术
|
8月前
|
算法 Java Apache
Apache Commons
Apache Commons是一个开源项目,提供了一系列的工具和库,用于简化Java开发中的常见任务。
76 1
|
8月前
|
API Windows
解决echarts.apache.org官网不能访问的问题(主要是用于查看配置项API参数细节说明)
解决echarts.apache.org官网不能访问的问题(主要是用于查看配置项API参数细节说明)
|
监控 Dubbo Java
带你读《Apache Dubbo微服务开发从入门到精通》——六、 配置项手册(9)
带你读《Apache Dubbo微服务开发从入门到精通》——六、 配置项手册(9)
110 10
|
编解码 JSON Dubbo
带你读《Apache Dubbo微服务开发从入门到精通》——六、 配置项手册(5)
带你读《Apache Dubbo微服务开发从入门到精通》——六、 配置项手册(5)
119 6
|
编解码 JSON Dubbo
带你读《Apache Dubbo微服务开发从入门到精通》——六、 配置项手册(6)
带你读《Apache Dubbo微服务开发从入门到精通》——六、 配置项手册(6)
129 8
|
XML 缓存 负载均衡
带你读《Apache Dubbo微服务开发从入门到精通》——六、 配置项手册(10)
带你读《Apache Dubbo微服务开发从入门到精通》——六、 配置项手册(10)
110 5
|
存储 Prometheus 安全
带你读《Apache Dubbo微服务开发从入门到精通》——六、 配置项手册(8)
带你读《Apache Dubbo微服务开发从入门到精通》——六、 配置项手册(8)
184 6
|
缓存 Kubernetes 负载均衡
带你读《Apache Dubbo微服务开发从入门到精通》——六、 配置项手册(7)
带你读《Apache Dubbo微服务开发从入门到精通》——六、 配置项手册(7)
136 4

热门文章

最新文章

推荐镜像

更多
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等