HibernateException: Too many connections , using c3p0

让人想犯罪 __ 提交于 2020-02-23 07:30:18

问题


I created hibernate application with using c3p0 for get access to my database,

This is my hibernate.cfg.xml ,

<?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">
<hibernate-configuration>
  <session-factory>
    <property name="show_sql">true</property>
    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/example</property>
    <property name="hibernate.connection.username">******</property>  
    <property name="hibernate.c3p0.min_size">5</property>
    <property name="hibernate.c3p0.max_size">20</property>
    <property name="hibernate.c3p0.timeout">3000</property>
    <property name="hibernate.c3p0.max_statements">50</property>
    <property name="hibernate.c3p0.idle_test_period">300</property>
    <property name="hibernate.c3p0.testConnectionOnCheckout">true</property>
    <property name="hibernate.c3p0.preferredTestQuery">SELECT 1</property>
    <property name="hibernate.connection.password">*******</property>
    <mapping resource="beans/Reminder.hbm.xml"/>
    <mapping resource="beans/StressType.hbm.xml"/>
    <mapping resource="beans/Medication.hbm.xml"/>
    <mapping resource="beans/ReportType.hbm.xml"/>
    <mapping resource="beans/Comobility.hbm.xml"/>
    <mapping resource="beans/Report.hbm.xml"/>
  </session-factory>
</hibernate-configuration>

And this my HibernateUtil file . I named it as SessionFactoryBuilder.java,

import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;

public class SessionFactoryBuilder
{
    private static SessionFactoryBuilder instance;
    private static SessionFactory sessionFactory;

    private SessionFactoryBuilder()
    {
        buildConfig();
        System.out.println("hehehehe");
    }

    private static void buildConfig()
    {
        Configuration configuration = new Configuration().configure();
            StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder()
                            .applySettings(configuration.getProperties());
            sessionFactory = configuration.buildSessionFactory(builder.build());
    }

    public static SessionFactoryBuilder getInstance()
    {
         if(instance == null) 
         {
            instance = new SessionFactoryBuilder();

         }
      return instance;
    }

    public SessionFactory getSessionFactory()
    {
        return sessionFactory;
    }  

}

When I get access to my database using this SessionFactoryBuilder, I get following , "Too many connections" .

This is an example how I used this,

ReportTypeService reportTypeService = new ReportTypeService();

List<ReportType> list = reportTypeService.getAllReportTypes();
for(int i=0;i<list.size();i++){
     out.print("Type - "+list.get(i).getType());
}

This is not coming at all the time .But when it appears the connection to the database is gone.

Have any ideas ?

来源:https://stackoverflow.com/questions/39661594/hibernateexception-too-many-connections-using-c3p0

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!