报的是这几个错:1,javax.servlet.ServletException: org.springframework.orm.hibernate3.HibernateJdbcException: JDBC exception on Hibernate data access; nested exception is org.hibernate.exception.GenericJDBCException: Cannot open connection,
2,org.springframework.orm.hibernate3.HibernateJdbcException: JDBC exception on Hibernate data access; nested exception is org.hibernate.exception.GenericJDBCException: Cannot open connection
3,org.hibernate.exception.GenericJDBCException: Cannot open connection
4,org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Data source rejected establishment of connection,  message from server: "Too many connections")
5,com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException: Data source rejected establishment of connection,  message from server: "Too many connections"连接总是关闭不了。用着用着就无法连接了。高手帮我看看啊,我怎么找也找不出问题,,类是用extends HibernateDaoSupport的方法写的,用的是getHibernateTemplate()。我实在找不出问题所在,高手帮帮我。以下是我的配置文件。<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"><beans>
<bean id="datasource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName"><value>com.mysql.jdbc.Driver</value></property>
<property name="url"><value>jdbc:mysql://localhost:3306/shop</value></property>
<property name="username"><value>root</value></property>
<property name="password"><value>nbsp</value></property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource"><ref bean="datasource" /></property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>emp/shop/model/User.hbm.xml</value>
<value>emp/shop/model/Orders.hbm.xml</value>
<value>emp/shop/model/PayType.hbm.xml</value>
<value>emp/shop/model/OrderItem.hbm.xml</value>
<value>emp/shop/model/Product.hbm.xml</value>
<value>emp/shop/model/ProductType.hbm.xml</value>
<value>emp/shop/model/SiteHit.hbm.xml</value>
<value>emp/shop/model/Manager.hbm.xml</value>
<value>emp/shop/model/Advice.hbm.xml</value>
</list>
</property>
</bean>
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>

<!-- ************************以下代码为对用户操作的事务处理*********************** --> <bean id="userDaoImpl"
class="emp.shop.dao.UserDaoImpl">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
<bean id="userDaoProxy"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="target">
<ref local="userDaoImpl" />
</property> <property name="transactionManager">
<ref local="transactionManager" />
</property> <property name="transactionAttributes">
<props>
<prop key="add*"></prop>
<prop key="delete*"></prop>
<prop key="modify*"></prop>
<prop key="query*"></prop>
</props>
</property>
</bean>

<!-- ************************以下代码为对产品操作的事务处理*********************** --> <bean id="productDaoImpl"
class="emp.shop.dao.ProductDaoImpl">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
<bean id="productDaoProxy"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="target">
<ref local="productDaoImpl" />
</property> <property name="transactionManager">
<ref local="transactionManager" />
</property> <property name="transactionAttributes">
<props>
<prop key="add*"></prop>
<prop key="delete*"></prop>
<prop key="modify*"></prop>
<prop key="query*"></prop>
</props>
</property>
</bean>


<!-- ************************以下代码为对付款方式操作的事务处理*********************** --> <bean id="payTypeDaoImpl"
class="emp.shop.dao.PayTypeDaoImpl">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
<bean id="payTypeDaoProxy"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="target">
<ref local="payTypeDaoImpl" />
</property> <property name="transactionManager">
<ref local="transactionManager" />
</property> <property name="transactionAttributes">
<props>
<prop key="add*"></prop>
<prop key="delete*"></prop>
<prop key="modify*"></prop>
<prop key="query*"></prop>
</props>
</property>
</bean>

<!-- ************************以下代码为对订单操作的事务处理*********************** --> <bean id="orderDaoImpl"
class="emp.shop.dao.OrderDaoImpl">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
<bean id="orderDaoProxy"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="target">
<ref local="orderDaoImpl" />
</property> <property name="transactionManager">
<ref local="transactionManager" />
</property> <property name="transactionAttributes">
<props>
<prop key="add*"></prop>
<prop key="delete*"></prop>
<prop key="modify*"></prop>
<prop key="query*"></prop>
</props>
</property>
</bean>


<!-- ************************以下代码为对订单项操作的事务处理*********************** --> <bean id="orderItemDaoImpl"
class="emp.shop.dao.OrderItemDaoImpl">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
<bean id="orderItemDaoProxy"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="target">
<ref local="orderItemDaoImpl" />
</property> <property name="transactionManager">
<ref local="transactionManager" />
</property> <property name="transactionAttributes">
<props>
<prop key="add*"></prop>
<prop key="delete*"></prop>
<prop key="modify*"></prop>
<prop key="query*"></prop>
</props>
</property>
</bean>

<!-- ************************以下代码为对商品类型操作的事务处理*********************** --> <bean id="productTypeDaoImpl"
class="emp.shop.dao.ProductTypeDaoImpl">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
<bean id="productTypeDaoProxy"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="target">
<ref local="productTypeDaoImpl" />
</property> <property name="transactionManager">
<ref local="transactionManager" />
</property> <property name="transactionAttributes">
<props>
<prop key="add*"></prop>
<prop key="delete*"></prop>
<prop key="modify*"></prop>
<prop key="query*"></prop>
</props>
</property>
</bean>

<!-- ************************以下代码为对商品类型操作的事务处理*********************** --> <bean id="siteHitDaoImpl"
class="emp.shop.dao.SiteHitDaoImpl">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
<bean id="siteHitDaoProxy"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="target">
<ref local="siteHitDaoImpl" />
</property> <property name="transactionManager">
<ref local="transactionManager" />
</property> <property name="transactionAttributes">
<props>
<prop key="modify*"></prop>
<prop key="query*"></prop>
</props>
</property>
</bean>

<!-- ************************以下代码为对管理员操作的事务处理*********************** --> <bean id="managerDaoImpl"
class="emp.shop.dao.ManagerDaoImpl">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
<bean id="managerDaoProxy"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="target">
<ref local="managerDaoImpl" />
</property> <property name="transactionManager">
<ref local="transactionManager" />
</property> <property name="transactionAttributes">
<props>
<prop key="add*"></prop>
<prop key="delete*"></prop>
<prop key="modify*"></prop>
<prop key="query*"></prop>
</props>
</property>
</bean>

<!-- ************************以下代码为对投诉操作的事务处理*********************** --> <bean id="adviceDaoImpl"
class="emp.shop.dao.AdviceDaoImpl">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
<bean id="adviceDaoProxy"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="target">
<ref local="adviceDaoImpl" />
</property> <property name="transactionManager">
<ref local="transactionManager" />
</property> <property name="transactionAttributes">
<props>
<prop key="add*"></prop>
<prop key="delete*"></prop>
<prop key="modify*"></prop>
<prop key="query*"></prop>
</props>
</property>
</bean>
</beans>

解决方案 »

  1.   

    底层的dao实现继承的基类里面的connection没有关闭啊, 你debug看看connection从哪儿获取的 用完了以后是不是没有closeConnection(connection);
      

  2.   

    报的无法打开连接,getHibernateTemplate不用手动关闭连接。
      

  3.   

    都怪我没说清楚,,是这样的,,,mysql默认连接100,程序启动,,可以进行100次数据库操作,,然后就报错说:无法再连接,,,也就是说,100条连接开了没有关。
      

  4.   

    配置上看不出来,把service和dao层的代码贴出来看看..
      

  5.   

    很多的冗余配置,为什么每个业务都配置了一个? <property name="transactionManager">
    <ref local="transactionManager" />
    </property><property name="transactionAttributes">
    <props>
    <prop key="add*"></prop>
    <prop key="delete*"></prop>
    <prop key="modify*"></prop>
    <prop key="query*"></prop>
    </props>
    看上去有点别扭
    配置一个就行了。。后面的可以直接引用。。
    如: <bean id="hibernateServiceProxy" parent="userDaoProxy">
    <property name="target">
    <list>
    <ref bean="xx1Service" />
    <ref bean="xx2Service" />
    <ref bean="xx3Service" />
    ...
    </list>
    </property>
    </bean>
      

  6.   

    关闭问题。。仔细检查一下有没有自己管理的session忘记关闭了。。
      

  7.   

    因为业务逻辑简单,,没有BO层,,dao层的每一个方法就是一个事务。这是其中一个到的代码:package emp.shop.dao;import java.util.List;import org.springframework.orm.hibernate3.support.HibernateDaoSupport;import emp.shop.idao.IProductTypeDao;
    import emp.shop.model.ProductType;public class ProductTypeDaoImpl extends HibernateDaoSupport implements IProductTypeDao { public void addProductType(ProductType productType) {

    this.getHibernateTemplate().save(productType);
    } public void deleteProductType(ProductType productType) { this.getHibernateTemplate().delete(productType);
    } public void modifyProductType(ProductType productType) { this.getHibernateTemplate().update(productType);
    } public List<ProductType> queryProductType() {

    List productTypeList=this.getHibernateTemplate().find("from ProductType");

    return productTypeList;
    } public ProductType queryProductTypeById(int product_type_id) {

    List productTypeList = this.getHibernateTemplate().find("from ProductType where product_type_id=" +product_type_id);
    ProductType productType = null; if(productTypeList.size() == 1) {
    productType = (ProductType)productTypeList.get(0);
    }
    return productType;
    }}
      

  8.   

    1.你既然用hibernateTemplate,那你的hibernate配置就有问题,
    然后你很多冗余的配置, 并且hibernateTemplate是自动管理连接的。
      

  9.   

    冗余是那些重复的地方可以重用现在肯定是什么地方使用了数据库,开辟了连接而没有关闭,重点检查开辟连接的地方
    甚至可以通过改变mysql端口来调试
      

  10.   

    8楼的意思是 你的配置
    <prop key="add*"></prop>
    <prop key="delete*"></prop>
    <prop key="modify*"></prop>
    <prop key="query*"></prop>
    </props>可以只需要用一个就可以了 不需要每一个都配一下。