Как устранить слишком много ошибок подключения в Hibernate - PullRequest
1 голос
/ 10 февраля 2012

Я использую Struts2 + Hibernate3 в моем веб-приложении. Работает нормально. Несколько раз показывает, Не удается открыть соединение. Следующее заявление о соединении для соединения с Hibernate в Класс действия .

protected SessionFactory getSessionFactory() {
    try {  

        Configuration cfg = new Configuration(); 
        cfg.configure("hibernate.cfg.xml"); 
        SessionFactory factory = cfg.buildSessionFactory(); 
        return factory; 

    } catch (Exception e) {
        log.error("sessionFactory", e);
        throw new IllegalStateException(
                "Could not locate SessionFactory");
    }
}
    public List viewAllPromotion() {
        System.out.println("finding student instance");
        try {
            Session session = sessionFactory.openSession();
            System.out.println("View All Student"); 
            session.beginTransaction(); 
            List results = session.createQuery("from   Student").list();  
            System.out.println("List got Rsults:"+results.size());

            session.close();  
            return results; 


        } catch (RuntimeException re) {  
            log.error("find by example failed", re);
            throw re;  
        }
    }

Файл конфигурации Hibernate :

 <session-factory>
    <property name="hibernate.bytecode.use_reflection_optimizer">false</property>
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/marksheet</property>
    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>  
    <property name="hibernate.connection.username">root</property>
    <property name="hibernate.connection.password">admin</property>
    <property name="hibernate.search.autoregister_listeners">false</property>  
    <property name="hibernate.session_factory_name">MySessionFactory</property> 
    <property name="current_session_context_class">thread</property> 
    <property name="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property>
    <property name="hibernate.connection.pool_size">10</property>

    <property name="show_sql">true</property>
    <mapping resource="com/rewardz/model/student.hbm.xml" />   
    <mapping resource="com/rewardz/model/course.hbm.xml" />              
    <mapping resource="com/rewardz/model/subject.hbm.xml" />  
    <mapping resource="com/rewardz/model/staff.hbm.xml" />  
    <mapping resource="com/rewardz/model/Role.hbm.xml" />  
    <mapping resource="com/rewardz/model/Privilege.hbm.xml" />  
    <mapping resource="com/rewardz/model/Logtab.hbm.xml" />  
</session-factory>

Я получаю следующее сообщение об ошибке, когда делаю больше транзакций.

   HTTP Status 500 - type Exception report

   message

        descriptionThe server encountered an internal error () that prevented it from fulfilling this request.

   exception

        org.hibernate.exception.JDBCConnectionException: Cannot open connection

note Примечание Полные трассировки стека исключения и его первопричины доступны в журналах GlassFish Server Open Source Edition 3.1.1.

Может кто-нибудь помочь мне решить эту проблему? Заранее спасибо.

1 Ответ

0 голосов
/ 10 февраля 2012

Вы должны опубликовать трассировку стека. Я предполагаю, что это говорит вам больше о том, что не так.

Также попробуйте использовать пул соединений, такой как c3p0 или bonecp. Вы можете столкнуться со странными проблемами с подключением, если не используете одну из этих библиотек, такими как тайм-аут подключения после слишком долгого открытия и т. Д.

...