如何使用Spring和Hibernate配置连接池? 我的程序作为服务器来监听来自客户端的请求。 如果客户端每小时发送请求,我的程序运行正常。 但是如果客户端没有从00:00 am到07:00发送请求,我的程序会捕获异常。
例外是:
org.hibernate.TransactionException:回滚失败 at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.rollback(AbstractTransactionImpl.java:215) 在CardCharging_MemCache.dao.FilterDao.getConnectorId(FilterDao.java:123) 在CardCharging_MemCache.bussiness.CDVFilterRequestProcess.PCSL(CDVFilterRequestProcess.java:29) 在CardCharging_MemCache.myhttp.myHttphandle.handle(myHttphandle.java:113) at com.sun.net.httpserver.Filter $ Chain.doFilter(Unknown Source) 在sun.net.httpserver.AuthFilter.doFilter(未知来源) at com.sun.net.httpserver.Filter $ Chain.doFilter(Unknown Source) at sun.net.httpserver.ServerImpl $ Exchange $ LinkHandler.handle(Unknown Source) at com.sun.net.httpserver.Filter $ Chain.doFilter(Unknown Source) at sun.net.httpserver.ServerImpl $ Exchange.run(Unknown Source) at sun.net.httpserver.ServerImpl $ DefaultExecutor.execute(Unknown Source) at sun.net.httpserver.ServerImpl $ Dispatcher.handle(Unknown Source) at sun.net.httpserver.ServerImpl $ Dispatcher.run(Unknown Source) 在java.lang.Thread.run(未知来源) 引起:org.hibernate.TransactionException:无法回滚JDBC连接 在org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.doRollback(JdbcTransaction.java:167) at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.rollback(AbstractTransactionImpl.java:209) ......还有13个 引起:java.sql.SQLException:关闭连接 at oracle.jdbc.driver.PhysicalConnection.rollback(PhysicalConnection.java:3694) 在org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.doRollback(JdbcTransaction.java:163) ......还有14个。
例外是关于连接。 任何人帮助我。 PLZ。 Thaks!
答案 0 :(得分:0)
正常数据库连接无效,如果连接空闲一段时间[默认为8小时],为了避免这种情况,您只需在连接池中设置这些属性 - “validationQuery”,“validationInterval”,“testWhileIdle”,“ testOnBorrow”。它们将在空闲时间内保持连接,并始终从池中返回有效连接。
答案 1 :(得分:0)
在连接池中尝试使用此属性,它们应避免会话失效
<bean class="org.apache.tomcat.jdbc.pool.DataSource" id="dataSource" >
<property name="driverClassName" value="${database.driverClassName}"/>
<property name="url" value="${database.url}"/>
<property name="username" value="${database.username}"/>
<property name="password" value="${database.password}"/>
<property name="minIdle" value="${database.minIdle}"/>
<property name="initialSize" value="${database.initialPoolSize}"/>
<property name="maxActive" value="${database.maxPoolSize}"/>
<property name="maxIdle" value="${database.maxIdle}"/>
<property name="testOnBorrow" value="true"/>
<property name="validationQuery" value="SELECT 1"/>
<property name="timeBetweenEvictionRunsMillis" value="30000"/>
<property name="maxWait" value="10000"/>
<property name="minEvictableIdleTimeMillis" value="30000"/>
<property name="logAbandoned" value="true"/>
<property name="testWhileIdle" value="true"/>
<property name="validationInterval" value="300000"/>
<property name="jdbcInterceptors" value="org.apache.tomcat.jdbc.pool.interceptor.SlowQueryReport(threshold=10000)"/>
</bean>
了解属性及其解释here..