`
rq2_79
  • 浏览: 239781 次
  • 性别: 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 是一个广泛使用的对象池库,主要在Java开发中用于高效管理资源。对象池的概念是创建一组预先配置的对象,而不是每次需要时都创建新的对象,这大大减少了对象的创建和销毁开销,提高了应用...

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

    Apache Commons Pool2是一个Java对象池库,用于管理可重用对象。对象池是软件设计中的一个概念,通过池化资源,可以有效地减少创建和销毁对象的开销,提高系统的性能和效率。Apache Commons Pool2是Apache Commons...

    commons-pool2-2.5.0-bin.zip

    Apache Commons Pool 2 是一个广泛使用的对象池库,它的最新版本是 2.5.0。对象池在软件设计中是一种优化资源管理的技术,通过复用已创建的对象,避免频繁的创建和销毁过程,从而提高性能。Apache Commons Pool 2 ...

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

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

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

    Apache Commons Pool2是Java开发中的一个对象池库,主要用于提高对象的重用效率,从而提升系统性能。在本文中,我们将深入探讨这个库的核心概念、设计模式以及如何通过源码学习来理解其工作原理。 首先,Apache ...

    commons-pool.jar

    《Apache Commons Pool与Tomcat8连接Redis的深入解析》 Apache Commons Pool库是Apache软件基金会的一个项目,专门用于提供对象池化的实现。在Java开发中,对象池化是一种优化资源管理的技术,它允许开发者创建一组...

    commons-pool2-2.8.1.jar

    《Apache Commons Pool 2.8.1:高效对象池实现详解》 Apache Commons Pool 是一个广泛使用的开源组件,主要用于提供对象池化的实现。在Java世界里,对象池化是一种优化资源管理的重要技术,通过复用已创建的对象,...

    commons-pool-1.6.jar.zip

    标题中的"commons-pool-1.6.jar.zip"表明这是一个包含Apache Commons Pool 1.6版本的压缩文件,其中的核心组件是`commons-pool-1.6.jar`。 **Apache Commons Pool 概述** Apache Commons Pool 是Apache软件基金会的...

    commons-pool commons-dbcp

    Apache Commons DBCP(数据库连接池)和Apache Commons Pool是两个在Java开发中广泛使用的开源库,主要用于管理和优化数据库连接的使用。这两个组件是高效、可靠的数据库操作背后的关键技术。 Apache Commons Pool...

    commons-pool2-2.10.0.jar

    《Apache Commons Pool 2.10.0:高效对象池详解》 Apache Commons Pool 是一个广泛使用的开源组件,主要用于提供对象池化的实现。在Java世界里,对象池化是一种优化资源管理的重要技术,通过对象池可以减少频繁创建...

    commons-pool.jar包下载

    `commons-pool.jar` 是Apache Commons项目中的一个子项目,全称为Apache Commons Pool,它是一个通用的对象池服务库。对象池是一种设计模式,用于高效管理资源,尤其是那些创建和销毁开销较大的对象。通过对象池,...

    commons pool dbcp 包

    Apache Commons DBCP(Database Connection Pool)和Apache Commons Pool是两个在Java开发中常用的开源库,主要用于数据库连接池管理和对象池服务。它们是Apache软件基金会的项目,为Java应用程序提供了高效且可配置...

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

    Apache Commons Pool 1.6是Java开发中一个重要的工具库,专门用于对象池化服务。对象池化是一种优化资源管理的技术,它通过预先创建并维护一组可重用对象,避免了频繁的对象创建和销毁,从而提高了系统性能。在...

    commons-pool-1.6.jar

    "commons-pool-1.6.jar" 这个文件名表明它是一个Java库,属于Apache Commons项目的一部分,具体是Apache Commons Pool 1.6版本。Apache Commons Pool是一个通用的对象池服务,它提供了一种有效管理对象资源的方式,...

    commons-pool-1.4

    Apache Commons Pool 是一个开源的Java对象池库,版本1.4是该项目的一个稳定版本。对象池的概念是为了提高性能和资源管理,通过复用已创建的对象而不是每次需要时都创建新的对象。在Java应用中,特别是在大型企业级...

    commons-pool2-2.4.2.jar

    Apache Commons Pool2是一个Java对象池库,用于管理资源的复用,特别是数据库连接池。在IT行业中,数据源管理是优化系统性能的关键部分,而Apache Commons Pool2则是实现这一目标的重要工具。本篇将深入探讨这个库的...

    commons-pool2-2.6.0-bin.zip

    Apache Commons Pool2是一个Java对象池库,用于管理可重用对象。对象池是软件设计中的一个概念,它允许程序在需要时重复使用已创建的对象,而不是每次需要时都创建新的对象。这在处理资源密集型对象(如数据库连接或...

Global site tag (gtag.js) - Google Analytics