错误出现错误时因为跟数据库访问次数过多而造成的连接失败!》。我开始以为是session没自动关闭,我就手动关闭了session但是关闭了session,并且清空了session还是出现了这个问题。。大家帮忙看下。。
这是我的Spring配置:<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
  <property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
</bean>

<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
  <property name="sessionFactory" ref="sessionFactory"></property>
</bean>

<tx:advice id="txAdvices" transaction-manager="transactionManager">
   <tx:attributes>
     <tx:method name="add*" propagation="REQUIRED"/>
     <tx:method name="del*" propagation="REQUIRED"/>
     <tx:method name="update*" propagation="REQUIRED"/>
     <tx:method name="*" read-only="true"/>
   </tx:attributes>
</tx:advice>
    
这是我的hibernate配置:<property name="connection.username">root</property>
<property name="connection.url">jdbc:mysql://192.168.18.26:3306/homepage?characterEncoding=utf-8&amp;amp;zeroDateTimeBehavior=convertToNull</property>
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property>
<property name="myeclipse.connection.profile">
com.mysql.jdbc.Driver
</property>
<property name="connection.password">admin</property>
<property name="connection.driver_class">
com.mysql.jdbc.Driver
</property>
<property name="hibernate.connection.autocommit">true</property>
<property name="show_sql">true</property>

解决方案 »

  1.   

    org.springframework.dao.DataAccessResourceFailureException: Cannot open connection; nested exception is org.hibernate.exception.JDBCConnectionException: Cannot open connection
    Caused by: org.hibernate.exception.JDBCConnectionException: Cannot open connection
    at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:74)
    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.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:139)
    at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1547)
    at org.hibernate.loader.Loader.doQuery(Loader.java:673)
    at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
    at org.hibernate.loader.Loader.doList(Loader.java:2220)
    at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)
    at org.hibernate.loader.Loader.list(Loader.java:2099)
    at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:378)
    at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:338)
    at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172)
    at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
    at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
    at org.springframework.orm.hibernate3.HibernateTemplate$29.doInHibernate(HibernateTemplate.java:849)
    at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:372)
    at org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:840)
    at org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:832)
    at com.chinaclick.david.dao.impl.CommonDao.findALl(CommonDao.java:101)
    at com.chinaclick.david.back.activity.ActivityAction.CreateAll(ActivityAction.java:283)
    at sun.reflect.GeneratedMethodAccessor147.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:280)
    at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:216)
    at org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:106)
    at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
    at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
    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 com.chinaclick.david.Filter.BackFile.doFilter(BackFile.java:41)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at com.chinaclick.jerome.filter.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:123)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    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: Data source rejected establishment of connection,  message from server: "Too many connections"
    at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:990)
    at com.mysql.jdbc.Connection.createNewIO(Connection.java:2544)
    at com.mysql.jdbc.Connection.<init>(Connection.java:1474)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:264)
    at java.sql.DriverManager.getConnection(DriverManager.java:582)
    at java.sql.DriverManager.getConnection(DriverManager.java:154)
    at org.hibernate.connection.DriverManagerConnectionProvider.getConnection(DriverManagerConnectionProvider.java:110)
    at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:423)
    ... 53 more
      

  2.   

    这个应该跟连接池没关系把。我就是觉得session没关闭。session里面的值一直都没有清空。
      

  3.   

    很明显是连接处问题啦  session 没有打开  
      

  4.   

           Caused by: java.sql.SQLException: Data source rejected establishment of connection, message from server: "Too many connections"
             数据拒绝服务 :  太多的链接 。
      

  5.   

    这个我知道。我每次访问都手动把session给关闭了。。是不是配置文件有问题。。帮忙看下。
      

  6.   

    lz遇到了跟我以前一样的问题这个问题的原因是因为连接池中的连接数是有限的,但是你访问了某个连接以后,却没有及时关闭,导致后面使用连接就一直等待中,就会出现这个问题解决方案:1、使用Spring的OpenSessionInViewFilter管理Session,程序自动关闭
    2、每次使用Session后,立即关闭,将Session放入ThreadLocal,这样每次关闭的就是当前的Session
      

  7.   

    <!-- 设置数据库连接池的最大连接数 -->

    <property name="maxPoolSize">
    <value>20</value>
    </property>
    <!-- 设置数据库连接池的最小连接数 -->
    <property name="minPoolSize">
    <value>2</value>
    </property>
    <!-- 设置数据库连接池的初始化连接数 -->
    <property name="initialPoolSize">
    <value>2</value>
    </property>
    <!-- 设置数据库连接池的连接的最大空闲时间,单位为秒 -->
    <property name="maxIdleTime">
    <value>20</value>
    </property>
    加个这个试一试
      

  8.   

       
       你尝试下这样写  、 
    Session sess = factory.openSession();   
    Transaction tx;  
    try {     
    tx = sess.beginTransaction();     //do some work     ...     tx.commit();  
    }  catch (Exception e) 
    {     if (tx!=null) tx.rollback();    
     throw e;  }  
    finally {     sess.close();  }  If you don't you will be running out of connections.