定制的数据源连接提供者
Type | Name and description |
---|---|
void |
closeConnection(java.sql.Connection conn) 关闭数据库连接 |
void |
configure(Map configValues) 初始化配置 |
java.sql.Connection |
getConnection() 获取一个数据库连接 |
void |
logTraceConnections() 打印数据库连接堆栈到 trace 日志中,以便问题分析。 |
void |
logTraceConnections(boolean println) |
Methods inherited from class | Name |
---|---|
class org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl |
org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl#stop(), org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl#configure(Map), org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl#unwrap(Class), org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl#getConnection(), org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl#closeConnection(java.sql.Connection), org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl#getDataSource(), org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl#setDataSource(javax.sql.DataSource), org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl#setJndiService(org.hibernate.engine.jndi.spi.JndiService), org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl#isUnwrappableAs(Class), org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl#supportsAggressiveRelease(), org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl#wait(long), org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl#wait(long, int), org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl#wait(), org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl#equals(Object), org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl#toString(), org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl#hashCode(), org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl#getClass(), org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl#notify(), org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl#notifyAll() |
class Object |
Object#wait(long), Object#wait(long, int), Object#wait(), Object#equals(Object), Object#toString(), Object#hashCode(), Object#getClass(), Object#notify(), Object#notifyAll() |
关闭数据库连接
初始化配置
获取一个数据库连接
打印数据库连接堆栈到 trace 日志中,以便问题分析。
打印的日志中,可能有已关闭的连接信息(不是通过 closeConnection 关闭的,或者是根本没使用、也没关闭的LazyConnection),需要具体问题具体分析。
// 临时启用trace日志
org.apache.log4j.Logger.getLogger("bropen.toolkit.orm.DatasourceConnectionProvider").level = org.apache.log4j.Level.TRACE
// 执行以打印数据库连接的堆栈信息
ctx.getBean("sessionFactory")?.getConnectionProvider().logTraceConnections( true/false )
// 输出当前的连接数
ctx.getBean("dataSourceUnproxied").getNumActive()
// 释放两个小时以上的数据库连接(后果未知)
DebugUtils.killDbConnections()
println
- 是打印到console还是trace日志中,默认为false(打印到trace日志)