SS2H + c3p0连接池 程序在运行一段时间后 就会出现无法连接数据库的错误
这是XML文件和c3p0的配置文件driverClass=com.mysql.jdbc.DriverjdbcUrl=jdbc:mysql://127.0.0.1:3306...
这是XML文件 和 c3p0的配置文件
driverClass=com.mysql.jdbc.Driver
jdbcUrl=jdbc:mysql://127.0.0.1:3306/gameClub
username=root
password=root
#C3P0 Setting
acquireIncrement=5
maxPoolSize=100
minPoolSize=10
initialPoolSize=20
maxIdleTime=600
checkoutTimeout=3000
maxConnectionAge=30000
autoCommitOnClose=false
acquireRetryDelay=3000
idleConnectionTestPeriod=60
maxStatements=5
numHelperThreads=12
#Hibernate Setting
hibernate.cache.use_second_level_cache=false
hibernate.show_sql=false
hibernate.jdbc.batch_size=30
hibernate.jdbc.fetch_size=50
hibernate.hbm2ddl.auto=update
hibernate.cache.use_query_cache=false
hibernate.format_sql=true
hibernate.cache.provider_class=org.hibernate.cache.OSCacheProvider
hibernate.dialect=org.hibernate.dialect.MySQLDialect
请问一下如何解决这个问题 是配置的问题吗? 还是事务未能及时提交或回滚导致的? 展开
driverClass=com.mysql.jdbc.Driver
jdbcUrl=jdbc:mysql://127.0.0.1:3306/gameClub
username=root
password=root
#C3P0 Setting
acquireIncrement=5
maxPoolSize=100
minPoolSize=10
initialPoolSize=20
maxIdleTime=600
checkoutTimeout=3000
maxConnectionAge=30000
autoCommitOnClose=false
acquireRetryDelay=3000
idleConnectionTestPeriod=60
maxStatements=5
numHelperThreads=12
#Hibernate Setting
hibernate.cache.use_second_level_cache=false
hibernate.show_sql=false
hibernate.jdbc.batch_size=30
hibernate.jdbc.fetch_size=50
hibernate.hbm2ddl.auto=update
hibernate.cache.use_query_cache=false
hibernate.format_sql=true
hibernate.cache.provider_class=org.hibernate.cache.OSCacheProvider
hibernate.dialect=org.hibernate.dialect.MySQLDialect
请问一下如何解决这个问题 是配置的问题吗? 还是事务未能及时提交或回滚导致的? 展开
1个回答
展开全部
您好,发现了问题,我首先在c3p0上加上 调试信息的配置 :
c3p0.debugUnreturnedConnectionStackTraces=true
c3p0.unreturnedConnectionTimeout=90 (我的连接超时时间是60s,所以这设置了90s)
applicationContext数据源配置增加响应配置
<property name="breakAfterAcquireFailure" value="${c3p0.breakAfterAcquireFailure}" />
<property name="testConnectionOnCheckout" value="${c3p0.testConnectionOnCheckout}" />
果然发现很多未回收的连接,正常情况下超时未回收的连接会有一些,但是不会这么多啊。
经查资料在hibernate sessionFacory中增加配置(http://hi.baidu.com/austincao/item/fc9907da3d854e44fa576861)
Spring3.1去掉了HibernateDaoSupport类。hibernate4需要通过getCurrentSession()获取session。 并且设置
<prop key="hibernate.current_session_context_class">org.springframework.orm.hibernate4.SpringSessionContext</prop>
在Spring @Transactional声明式事务管理,”currentSession”的定义为: 当前被 Spring事务管理器 管理的Session,此时应配置:
hibernate.current_session_context_class=org.springframework.orm.hibernate4.SpringSessionContext。
另外在hibernate中使用 sessionFactory.getCurrentSession()获取session时,需要为方法声明事务,为此将sqlserver。
c3p0.debugUnreturnedConnectionStackTraces=true
c3p0.unreturnedConnectionTimeout=90 (我的连接超时时间是60s,所以这设置了90s)
applicationContext数据源配置增加响应配置
<property name="breakAfterAcquireFailure" value="${c3p0.breakAfterAcquireFailure}" />
<property name="testConnectionOnCheckout" value="${c3p0.testConnectionOnCheckout}" />
果然发现很多未回收的连接,正常情况下超时未回收的连接会有一些,但是不会这么多啊。
经查资料在hibernate sessionFacory中增加配置(http://hi.baidu.com/austincao/item/fc9907da3d854e44fa576861)
Spring3.1去掉了HibernateDaoSupport类。hibernate4需要通过getCurrentSession()获取session。 并且设置
<prop key="hibernate.current_session_context_class">org.springframework.orm.hibernate4.SpringSessionContext</prop>
在Spring @Transactional声明式事务管理,”currentSession”的定义为: 当前被 Spring事务管理器 管理的Session,此时应配置:
hibernate.current_session_context_class=org.springframework.orm.hibernate4.SpringSessionContext。
另外在hibernate中使用 sessionFactory.getCurrentSession()获取session时,需要为方法声明事务,为此将sqlserver。
追问
意思是说我这里是因为很多连接未收回 导致的?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询