2011-07-28 41 views
1

與Hibernate的Pool和Mysql有衝突嗎? 我在MySQL的Web應用程序,我用冬眠connexion.but的使用應用程序的時段結束後的管理我有一個例外,在連接時:與Hibernate的Pool和Mysql衝突?

org.hibernate.exception.GenericJDBCException: Cannot open connection 
at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:103) 
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:91) 
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43) 
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:29) 
at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:426) 
at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:144) 
at org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:119) 
at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:57) 
at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1326) 
at big.commun.data.BigObjet.getSession(BigObjet.java:1808) 
at big.commun.auth.BigAuth.getSession(BigAuth.java:69) 
at big.commun.auth.BigAuth.SelectUser(BigAuth.java:159) 
at big.commun.auth.BigAuthAction.processRequest(BigAuthAction.java:46) 
at auth.AuthAction.processRequest(AuthAction.java:22) 
at big.commun.data.BigActionServer.doPost(BigActionServer.java:251) 
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:619) 
Caused by: java.sql.SQLException: An SQLException was provoked by the following failure: java.lang.InterruptedException 
at com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:106) 
at com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:65) 
at com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:62) 
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:531) 
at com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.getConnection(AbstractPoolBackedDataSource.java:128) 
at org.hibernate.connection.C3P0ConnectionProvider.getConnection(C3P0ConnectionProvider.java:56) 
at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:423) 
... 24 more 
Caused by: java.lang.InterruptedException 
at java.lang.Object.wait(Native Method) 
at com.mchange.v2.resourcepool.BasicResourcePool.awaitAvailable(BasicResourcePool.java:1315) 
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) 
... 27 more</code> 

有什麼能爲這個錯誤的原因是什麼?

這是我的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="dialect">org.hibernate.dialect.MySQLDialect</property> 
     <property name="connection.driver_class">com.mysql.jdbc.Driver</property> 
     <property name="show_sql">true</property> 
     <property name="max_fetch_depth">3</property> 
     <property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property> 
     <property name="c3p0.acquire_increment">2</property> 
     <property name="c3p0.idle_test_period">3000</property> 
     <property name="c3p0.timeout">1800</property> 
     <property name="c3p0.max_size">25</property> 
     <property name="c3p0.min_size" >3</property> 
     <property name="c3p0.max_statement">0</property> 
     <property name="c3p0.preferredTestQuery">select 1;</property> 
     <property name="c3p0.validate">true</property> 
     <property name="myeclipse.connection.profile">MysqlS2</property> 
    <session-factory> 
<hibernate-configuration></code> 

Edit¹:

如需進一步鑑定我補充這個問題:當從在網絡上部署的應用程序阻塞,如果我訪問相同的數據庫,但在我的計算機上部署的應用程序,我沒有問題連接。所以如果我打開一個連接工具數據庫(SQL管理器),我沒有問題來運行查詢。所以這不是一個沒有關閉的交易問題。

Edit²:

我得到甚至比更詳細:

org.hibernate.exception.GenericJDBCException: Cannot open connection 
    at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:103) 
    at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:91) 
    at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43) 
    at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:29) 
    at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:426) 
    at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:144) 
    at org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:119) 
    at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:57) 
    at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1326) 
    at big.commun.data.BigObjet.getSession(BigObjet.java:1826) 
    at big.commun.auth.BigAuth.getSession(BigAuth.java:68) 
    at big.commun.auth.BigAuth.SelectUserPermission(BigAuth.java:142) 
    at big.commun.auth.BigAuthAction.processRequest(BigAuthAction.java:58) 
    at auth.AuthAction.processRequest(AuthAction.java:22) 
    at big.commun.data.BigActionServer.doPost(BigActionServer.java:251) 
    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:619) 
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.hibernate.connection.C3P0ConnectionProvider.getConnection(C3P0ConnectionProvider.java:56) 
    at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:423) 
    ... 24 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) 

所以原因是:

Caused by: com.mchange.v2.resourcepool.CannotAcquireResourceException: A ResourcePool could not acquire a resource from its primary factory or source. 

什麼解釋在這種情況下給予?

回答

1

您是否從應用程序機器測試了連接參數?只需使用具有相同主機,端口,用戶/密碼和數據庫名稱的命令行mysql客戶端即可。有可能是憑據配置不正確。