`

java.sql.SQLException: Connections could not be acquired from the underlying da

阅读更多
org.springframework.jdbc.UncategorizedSQLException: Hibernate operation: Cannot open connection; uncategorized SQLException for SQL [???]; SQL state [null]; error code [0]; Connections could not be acquired from the underlying database!; nested exception is java.sql.SQLException: Connections could not be acquired from the underlying database!
	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:83)
	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
	at org.springframework.orm.hibernate3.HibernateAccessor.convertJdbcAccessException(HibernateAccessor.java:424)
	at org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:410)
	at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:411)
	at org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:374)
	at org.springframework.orm.hibernate3.HibernateTemplate.save(HibernateTemplate.java:683)
	at com.funo.daoImp.UpdateLogInfoDaoImp.saveActivityLog(UpdateLogInfoDaoImp.java:51)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:108)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
	at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
	at $Proxy0.saveActivityLog(Unknown Source)
	at com.funo.serviceImp.UpdateLogInfoServiceImp.saveActivityLog(UpdateLogInfoServiceImp.java:65)
	at com.funo.servlet.GetLogInfoServlet.doPost(GetLogInfoServlet.java:101)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
	at java.lang.Thread.run(Thread.java:662)
Caused by: java.sql.SQLException: Connections could not be acquired from the underlying database!
	at com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:106)
	at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:529)
	at com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.getConnection(AbstractPoolBackedDataSource.java:128)
	at org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider.getConnection(LocalDataSourceConnectionProvider.java:81)
	at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:446)
	at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:167)
	at org.hibernate.jdbc.AbstractBatcher.prepareSelectStatement(AbstractBatcher.java:145)
	at org.hibernate.id.SequenceGenerator.generate(SequenceGenerator.java:96)
	at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:122)
	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210)
	at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:56)
	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195)
	at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:50)
	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)
	at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:563)
	at org.hibernate.impl.SessionImpl.save(SessionImpl.java:551)
	at org.hibernate.impl.SessionImpl.save(SessionImpl.java:547)
	at org.springframework.orm.hibernate3.HibernateTemplate$12.doInHibernate(HibernateTemplate.java:686)
	at org.springframework.orm.hibernate3.HibernateTemplate$12.doInHibernate(HibernateTemplate.java:1)
	at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:406)
	... 32 more
Caused by: com.mchange.v2.resourcepool.CannotAcquireResourceException: A ResourcePool could not acquire a resource from its primary factory or source.
	at com.mchange.v2.resourcepool.BasicResourcePool.awaitAvailable(BasicResourcePool.java:1319)
	at com.mchange.v2.resourcepool.BasicResourcePool.prelimCheckoutResource(BasicResourcePool.java:557)
	at com.mchange.v2.resourcepool.BasicResourcePool.checkoutResource(BasicResourcePool.java:477)
	at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:525)
	... 50 more

配置好了后,进行几次操作是成功的,但是有时候操作几次后就会报上述错误。但是重新启动tomcat后仍是可以操作,也是会重复上面那个异常,可以操作,但是操作几次后仍会出错!
贴下hibernamte配置和spring配置;
spring:
。。。。。。。。。。。。。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xsi:schemaLocation="http://www.springframework.org/schema/beans  
	http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
	http://www.springframework.org/schema/tx
	http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
	http://www.springframework.org/schema/aop
	http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">


<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">  
    <property name="driverClass" value="oracle.jdbc.driver.OracleDriver" />  
    <property name="jdbcUrl" value="jdbc:oracle:thin:@localhost:1521:orcl" />  
    <property name="user" value="scott" />  
    <property name="password" value="12345" />  
    <property name="minPoolSize" value="10" />  
    <property name="maxPoolSize" value="20" />  
    <property name="maxIdleTime" value="1800" />  
    <property name="acquireIncrement" value="2" />  
    <property name="maxStatements" value="0" />  
    <property name="initialPoolSize" value="15" />  
    <property name="idleConnectionTestPeriod" value="1800" />  
    <property name="acquireRetryAttempts" value="30" />  
   
    <property name="testConnectionOnCheckout" value="false" />    
<property name="acquireRetryDelay" value="100"></property>
<property name="breakAfterAcquireFailure" value="false"></property>   
    
</bean> 

	<bean id="sessionFactory"
		class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
			<property name="configLocation"
			value="classpath:/hibernate.cfg.xml">
		</property>
		<property name="dataSource">
   			 <ref bean="dataSource" />
 		 </property>
	</bean>
	
	<bean id="logDaoImp" class="com.funo.daoImp.UpdateLogInfoDaoImp" >
		<property name="sessionFactory" ref="sessionFactory"></property>
	</bean>
	
	<bean id="registProductImp" class="com.funo.daoImp.RegistProductDaoImp" >
		<property name="sessionFactory" ref="sessionFactory"></property>
	</bean>
	
	<bean id="showLog" class="com.funo.daoImp.ShowLogDaoImp" >
		<property name="sessionFactory" ref="sessionFactory"></property>
	</bean>
	
	<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
		<property name="sessionFactory" ref="sessionFactory"></property>
	</bean>
	<tx:advice id="txAdvice" transaction-manager="transactionManager">
		<tx:attributes>
		<tx:method name="update*" propagation="REQUIRED"></tx:method>
	</tx:attributes>
	</tx:advice>
	<aop:config>
		<aop:pointcut id="daoPointcut" expression="execution(* com.funo.dao.Update*.*(..))"/>
		<aop:advisor advice-ref="txAdvice" pointcut-ref="daoPointcut"/>
	</aop:config>
</beans>

。。。。。。。。。。。
hibernate:
。。。。。。。。。。。。。。
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

	<!-- Generated by MyEclipse Hibernate Tools.                   -->
<hibernate-configuration>

<session-factory>
<!--  
	<property name="connection.url">
		jdbc:oracle:thin:@localhost:1521:orcl
	</property>
	<property name="connection.username">scott</property>
	<property name="connection.password">12345</property>
	<property name="connection.driver_class">
		oracle.jdbc.driver.OracleDriver
	</property>
	<property name="myeclipse.connection.profile">
		oracle.jdbc.OracleDriver
	</property>
	-->
	<property name="show_sql">true</property>
	<property name="format_sql">true</property>
	<property name="hibernate.dialect">
	
	
	
		org.hibernate.dialect.OracleDialect
	</property>
	
	<property name="hibernate.connection.provider_class">C3p0ConnectionProvider</property>
	
	<mapping resource="com/funo/entity/OperateLog.hbm.xml" />
	<mapping resource="com/funo/entity/ProductTable.hbm.xml" />
	<mapping resource="com/funo/entity/AccessLog.hbm.xml" />
	<mapping resource="com/funo/entity/ActivityBase.hbm.xml" />
	<mapping resource="com/funo/entity/ErrorLog.hbm.xml" />

</session-factory>

</hibernate-configuration>
我初步怀疑是c3p0数据库连接池没配好!希望高手可以看下!
今天查询一些代码和资料后,写出了一种解决方案:到现在为止还没有出现错误,贴出来和大家分享下:
主要是在hibernate中配置下:
当然在整合spring后,hibernate的配置在applicationContext.xml中
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xsi:schemaLocation="http://www.springframework.org/schema/beans  
	http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
	http://www.springframework.org/schema/tx
	http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
	http://www.springframework.org/schema/aop
	http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">


	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
		destroy-method="close">
		<property name="driverClass" value="oracle.jdbc.driver.OracleDriver" />
		<property name="jdbcUrl" value="jdbc:oracle:thin:@localhost:1521:orcl" />
		<property name="user" value="scott" />
		<property name="password" value="12345" />

		<!--
			<property name="minPoolSize" value="5" /> <property
			name="maxPoolSize" value="20" /> <property name="acquireIncrement"
			value="2" /> <property name="maxStatements" value="100" /> <property
			name="initialPoolSize" value="15" /> <property
			name="acquireRetryAttempts" value="30" /> <property
			name="testConnectionOnCheckout" value="false" /> <property
			name="acquireRetryDelay" value="100"></property> <property
			name="breakAfterAcquireFailure" value="false"></property> <property
			name="idleConnectionTestPeriod" value="10800" /> <property
			name="maxIdleTime" value="21600" />
		-->
		<!--
			<property name="minPoolSize" value="10" /> <property
			name="maxPoolSize" value="100" /> <property name="maxIdleTime"
			value="1800" /> <property name="acquireIncrement" value="3" />
			<property name="maxStatements" value="1000" /> <property
			name="initialPoolSize" value="10" /> <property
			name="idleConnectionTestPeriod" value="60" /> <property
			name="acquireRetryAttempts" value="30" /> <property
			name="breakAfterAcquireFailure" value="true" /> <property
			name="testConnectionOnCheckout" value="false" />
		-->
		<property name="minPoolSize">
			<value>1</value>
		</property>
		<property name="maxPoolSize">
			<value>20</value>
		</property>
		<property name="maxIdleTime">
			<value>1800</value>
		</property>
		<property name="acquireIncrement">
			<value>2</value>
		</property>
		<property name="maxStatements">
			<value>0</value>
		</property>
		<property name="initialPoolSize">
			<value>2</value>
		</property>
		<property name="idleConnectionTestPeriod">
			<value>1800</value>
		</property>
		<property name="acquireRetryAttempts">
			<value>30</value>
		</property>
		<property name="breakAfterAcquireFailure">
			<value>true</value>
		</property>
		<property name="testConnectionOnCheckout">
			<value>false</value>
		</property>

	</bean>

	<bean id="sessionFactory"
		class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
		<property name="configLocation" value="classpath:/hibernate.cfg.xml">
		</property>
		<property name="dataSource">
			<ref bean="dataSource" />
		</property>
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.generate_statistics">true</prop>
				<prop key="hibernate.connection.release_mode">auto</prop>
				<prop key="hibernate.autoReconnect">true</prop>
				<prop key="hibernate.cglib.use_reflection_optimizer">true</prop>
			</props>
		</property>
	</bean>

	<bean id="logDaoImp" class="com.funo.daoImp.UpdateLogInfoDaoImp">
		<property name="sessionFactory" ref="sessionFactory"></property>
	</bean>

	<bean id="registProductImp" class="com.funo.daoImp.RegistProductDaoImp">
		<property name="sessionFactory" ref="sessionFactory"></property>
	</bean>

	<bean id="showLog" class="com.funo.daoImp.ShowLogDaoImp">
		<property name="sessionFactory" ref="sessionFactory"></property>
	</bean>

	<bean id="transactionManager"
		class="org.springframework.orm.hibernate3.HibernateTransactionManager">
		<property name="sessionFactory" ref="sessionFactory"></property>
	</bean>
	<tx:advice id="txAdvice" transaction-manager="transactionManager">
		<tx:attributes>
			<tx:method name="save*" propagation="REQUIRED"></tx:method>
			<tx:method name="check*" propagation="REQUIRED"></tx:method>
			<tx:method name="get*" propagation="REQUIRED"></tx:method>
		</tx:attributes>
	</tx:advice>
	<aop:config>
		<aop:pointcut id="daoPointcut" expression="execution(* com.funo.dao.*.*(..))" />
		<aop:advisor advice-ref="txAdvice" pointcut-ref="daoPointcut" />
	</aop:config>
</beans>


hibernate 详细配置参考:http://m.cnblogs.com/48210/1493274.html
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics