有甲骨文11g2和应用基于Java的春天数据源的
极品Oracle JDBC驱动程序启用/禁用CacheConnection在运行时功能的 - 也就是说,如果CacheConnection是使新如果在数据源自由连接的连接没有建立起来,如果CacheConnection是始终禁用新的连接建立,正在关闭放在空闲
后存在早期我们使用Apache的数据源:需要数据源的用于Oracle JDBC驱动程序启用/禁用CacheConnection
<bean id="datasourceClassic" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="oracle.jdbc.OracleDriver" />
<property name="url" value="jdbc:oracle:oci:@TEST" />
<property name="username" value="TEST" />
<property name="password" value="TEST" />
<property name="maxActive" value="10" />
<property name="defaultAutoCommit" value="false" />
</bean>
- 但此数据源不具备的功能的启用/禁用CacheConnection
我们测试OracleDataSource
:
<property name="URL" value="jdbc:oracle:oci:@TEST" />
<property name="user" value="TEST" />
<property name="password" value="TEST" />
<property name="connectionCachingEnabled" value="true" />
<property name="connectionCacheProperties">
<props>
<prop key="MinLimit">0</prop>
<prop key="MaxLimit">1</prop>
<prop key="InitialLimit">0</prop>
<prop key="InactivityTimeout">10</prop>
<prop key="ConnectionWaitTimeout">10</prop>
<prop key="ValidateConnection">true</prop>
</props>
</property>
</bean>
- 有这样的功能,但它只有在明确地设置这个选项的作用在context.xml中,和方法setConnectionCachingEnabled
从运行时
甲骨文因为11g2 recomended使用通用连接池(UCP) depreceted:
<bean id="datasource2" class="oracle.ucp.jdbc.PoolDataSourceFactory" factory-method="getPoolDataSource">
<property name="connectionFactoryClassName" value="oracle.jdbc.pool.OracleDataSource"/>
<property name="connectionPoolName" value="TEST"/>
<property name="URL" value="jdbc:oracle:oci:@TEST" />
<property name="user" value="TEST" />
<property name="password" value="TEST" />
<property name="initialPoolSize" value="0" />
<property name="minPoolSize" value="0" />
<property name="maxPoolSize" value="1" />
<property name="validateConnectionOnBorrow" value="true" />
</bean>
- 但这池也没有功能启用/禁用CacheConnection ...
什么数据源能够满足我的要求,你知道吗?
UPDATE:
我测试下一trik与org.apache.commons.dbcp.BasicDataSource
:
/* "Disable" CacheConnection */
BasicDataSource bds = ... //get DataSource
bds.setMaxIdle(0);
和:
/* "Enable" CacheConnection */
BasicDataSource bds = ... //get DataSource
bds.setMaxIdle(bds.getMaxActive());
作品像<property name="connectionCachingEnabled" value="true" />
- 你觉得这个怎么样?
[更新]我使用`org.apache.commons.dbcp.BasicDataSource`测试下一个trik:BasicDataSource.setMaxIdle(0) - 禁用和BasicDataSource.setMaxIdle(bds.getMaxActive()) - 启用。你怎么看待这件事? – Testus 2011-02-10 19:06:29