作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
问题:即使有连接池,也有许多 Activity 的未关闭的数据库物理连接。谁能告诉我为什么会这样?
我使用 oracle.jdbc.pool.OracleDataSource
配置了连接池设置。然而,物理连接似乎在使用后没有关闭。我想,既然是连接池,连接会从池中重用,所以不会做那么多物理连接,但现在不是这样!
从应用程序生成的数据库中有 100 多个 Activity 物理连接[不是来自 plsql 开发人员或任何此类客户端工具],由于它在尝试对数据库进行写操作时引发 TNS 错误,即使有大量 Activity 连接,读取操作也很好。
这是Spring的配置,
<bean id="oracleDataSource" class="oracle.jdbc.pool.OracleDataSource" destroy-method="close"
p:URL="${url}"
p:user="${username}"
p:password="${password}"
p:connectionCachingEnabled="true">
<property name="connectionProperties">
<props merge="default">
<prop key="AutoCommit">false</prop>
</props>
</property>
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"
p:dataSource-ref="oracleDataSource" />
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager"
p:dataSource-ref="oracleDataSource">
</bean>
返回 100 多个 Activity 连接的 SQL 是,
select username, terminal,schemaname, osuser,program from v$session where username = 'grduser'
最佳答案
您应该配置连接缓存,隐式连接缓存的最大连接数默认值是为数据库配置的最大数据库 session 数。
关于java - Oracle 数据源连接池不适用于 Spring 和 JDBCTemplate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28468350/
我是一名优秀的程序员,十分优秀!