问题描述:自己负责的一个公司项目采用了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