我在研究一些JDBC Oracle连接池项目时遇到了一个新的(Er) Oracle池实现,称为通用连接池( Universal Connection Pool,UCP)。现在,它使用一个新的类PoolDataSource,而不是启用了缓存选项的OracleDataSource来实现连接池。我正在讨论是否切换到这个新的实现,但是找不到任何好的文档来说明这会给我带来什么(如果有)修复/升级。有没有人有过这两方面的经验?优势/劣势?谢谢。
发布于 2009-09-16 21:38:12
最新的Oracle jdbc驱动程序(11.2.0.1.0)显式声明Oracle隐式连接缓存(使用OracleDataSource的连接缓存)已被弃用:
Oracle JDBC驱动程序11.2.0.1.0生产版Readme.txt
此版本中的新增功能?
通用连接池在此版本中,不推荐使用Oracle隐式连接缓存功能。强烈建议用户改用新的通用连接池。UCP具有ICC的所有功能,另外还有更多功能。UCP在一个单独的jar文件ucp.jar中提供。
所以我认为最好开始使用UCP,但是文档并不是很好。例如,我没有找到一种在spring中使用UCP的方法。
更新:我找到了正确的spring配置:好的,我想我找到了正确的配置:
<bean id="dataSource" class="oracle.ucp.jdbc.PoolDataSourceFactory" factory-method="getPoolDataSource">
<property name="URL" value="jdbc:oracle:thin:@myserver:1521:mysid" />
<property name="user" value="myuser" />
<property name="password" value="mypassword" />
<property name="connectionFactoryClassName" value="oracle.jdbc.pool.OracleDataSource" />
<property name="connectionPoolName" value="ANAG_POOL" />
<property name="minPoolSize" value="5" />
<property name="maxPoolSize" value="10" />
<property name="initialPoolSize" value="5" />
<property name="inactiveConnectionTimeout" value="120" />
<property name="validateConnectionOnBorrow" value="true" />
<property name="maxStatements" value="10" />
</bean>关键是指定正确的工厂类和正确的工厂方法
发布于 2009-09-16 00:52:18
PDS是“通用的”,因为它为非甲骨文数据库提供了与ODS相同级别的池化功能,例如MySQL。
请参阅UCP Dev Guide、an article on Oracle website和UCP Transition Guide
我看不到从ODS迁移到UCP (PDS)有什么立竿见影的好处,但也许将来Oracle会弃用ODS中的一些功能。我使用过一段时间的ODS,目前我对它很满意,但如果我从头开始,我会使用PDS。
发布于 2010-12-15 06:23:32
我对UCP做了广泛的评估,并决定不使用UCP - please have a look at this post作为详细信息。
https://stackoverflow.com/questions/1427890
复制相似问题