tomcat数据源连接失效问题导致应用停顿

项目在运行一段时间后,由于数据库连接失效导致服务异常。日志显示连接池中的连接无效但未移除。尝试了调整MySQL的wait_timeout、设置autoReconnect以及在连接池配置中添加检测连接属性等解决方案。最终,在连接池配置中添加检测属性有效解决了问题,确保应用稳定运行。欢迎提供更好的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述:自己负责的一个公司项目采用了JNDI数据源连接的方式部署在tomcat中,在tomcat中配置了数据源连接相关的属性,最初配置如下:

<Resource name="jdbc/myDB"
	auth="Container"
	type="javax.sql.DataSource"
        maxActive="100"
	maxIdle="30" 
	maxWait="10000"
        username="root"
	password="123456"
	driverClassName="com.mysql.jdbc.Driver"
        url="jdbc:mysql://127.0.0.1:3306/mydb?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC"/>



同时项目也整合了hibernate框架,对hibernate相关属性进行了配置。

tomcat启动运行,数据库连接正常使用,并没有出现任何问题,持续了几个月之久。

 

然而就在项目运行空闲期,中间大概间隔了几天没有任何请求调用,测试组需要验证一些资源的可用度,于是对该项目接口进行了调用,发现出现服务异常的情况,经过一番查证,发现数据源连接出现问题,无法释放。日志如下:

 

org.springframework.dao.DataAccessResourceFailureException:could not extract ResultSet; nested exception isorg.hibernate.exception.JDBCConnectionException: could not extract ResultSet
         atorg.springframework.orm.hibernate5.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:143)
         atorg.springframework.orm.hibernate5.HibernateTemplate.doExecute(HibernateTemplate.java:344)
         atorg.springframework.orm.hibernate5.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:309)
         atorg.springframework.orm.hibernate5.HibernateTemplate.get(HibernateTemplate.java:419)
         atorg.springframework.orm.hibernate5.HibernateTemplate.get(HibernateTemplate.java:412)
         atcom.iflytek.zszb.dao.hbn.OmrPhotoDao.find(OmrPhotoDao.java:16)
         atcom.iflytek.zszb.service.ASPProcessService.start(ASPProcessService.java:176)
         atcom.iflytek.zszb.service.ASPProcessService.process(ASPProcessService.java:161)
         atcom.iflytek.zszb.controller.ASPProcessController.entry(ASPProcessController.java:99)
         atsun.reflect.GeneratedMethodAccessor43.invoke(Unknown Source)
         atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
         atjava.lang.reflect.Method.invoke(Method.java:606)
         atorg.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221)
         atorg.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136)
         atorg.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)
         atorg.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:832)
         atorg.springframework.web.servlet.mvc.m
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值