我用SSH框架开发一个系统,后台数据库是Oracle的。用tomcat运行几分钟后就不能查询数据了。
用SSH+Oracle开发一个网站,发布到Tomcat容器中。
刚开始一两分钟,运行无压力。
但是只要超过一两分钟,系统就无法查询数据库了。
很像断开连接。
但是不是连接数超过限制,我看着系统日志的,没有任何缓存的连接数。
Tomcat的并发连接也改了,可是还是不行。
求教各位大神,帮忙解决一下。
------解决方案--------------------Datasource
timeBetweenEvictionRunsMillis 定时检查连接池的时间间隔
minEvictableIdleTimeMillis 连接最大空闲时间,单位为毫秒 这2个参数会保持在这段时间内连接是可用的
试一下吧
------解决方案--------------------估计spring配置问题吧,数据库连接使用后不自动释放导致的。
给你个配置参考
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close">
<property name="driverClass" value="${jdbc.driverClassName}" />
<property name="jdbcUrl" value="${jdbc.url}" />
<property name="user" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<property name="minPoolSize" value="${minPoolSize}" />
<property name="maxPoolSize" value="${maxPoolSize}" />
<property name="maxIdleTime" value="${maxIdleTime}" />
<property name="acquireIncrement" value="${acquireIncrement}" />
<property name="maxStatements" value="${maxStatements}" />
<property name="initialPoolSize" value="${initialPoolSize}" />
<property name="idleConnectionTestPeriod" value="${idleConnectionTestPeriod}" />
<property name="acquireRetryAttempts" value="${acquireRetryAttempts}" />
<property name="acquireRetryDelay" value="${acquireRetryDelay}"/>
<property name="breakAfterAcquireFailure" value="${breakAfterAcquireFailure}" />
<property name="testConnectionOnCheckout" value="${testConnectionOnCheckout}" />
</bean>
参数:
jdbc.driverClassName=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc:oracle:thin:@192.168.0.1:1521:orcl
jdbc.username=XXXX
jdbc.password=XXXX
minPoolSize=2
maxPoolSize=30
#(in seconds)
maxIdleTime=1800
acquireIncrement=2
maxStatements=0
initialPoolSize=2
#(in seconds)
idleConnectionTestPeriod=60
acquireRetryAttempts=10
# (in milliseconds)
acquireRetryDelay=1000
breakAfterAcquireFailure=false
testConnectionOnCheckout=false
------解决方案--------------------还有session配置,你对照着看看,是不是配置有问题:
<!-- 结束 -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="lobHandler">
<ref bean="myLobHandler" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hiber