वसंत के साथ हाइबरनेट: बहुत सारे कनेक्शन

हमारी परियोजना हाइबरनेट 3.2.7.ga का उपयोग कर रही है और डीबी इंटरैक्शन को संभालने के लिए स्प्रिंग्स 2.5.6 है। उत्पादन सर्वर पर, उपयोगकर्ताओं की एक निश्चित संख्या के बाद कनेक्ट (10 से अधिक नहीं) हम निम्नलिखित त्रुटि प्राप्त करना शुरू करते हैं:

javax.servlet.ServletException: javax.servlet.ServletException: 
org.springframework.transaction.CannotCreateTransactionException: 
Could not open Hibernate Session for transaction; nested exception is org.hibernate.exception.GenericJDBCException: Cannot open connection

जो से उत्पन्न होता है:

org.postgresql.util.PSQLException: FATAL: 
connection limit exceeded for non-superusers

इसी तरह के प्रश्नों को पढ़ते हुए मुझे पता चला कि अपराधी आमतौर पर पूलिंग डेटासोर्स का उपयोग नहीं कर रहा है। तो मैं वसंत विन्यास की जांच करने गया और पाया -

applicationContext.xml:

<?xml version="1.0" encoding="UTF-8"?>




    <!-- ========================= RESOURCE DEFINITIONS ========================= -->

    
        /WEB-INF/jdbc.properties
    

     <!--class="org.springframework.jdbc.datasource.DriverManagerDataSource">-->
        ${jdbc.driverClassName}
        ${jdbc.url}
        ${jdbc.username}
        ${jdbc.password}
    

    <!-- Hibernate SessionFactory -->
    
        
        
        
            ....
        
        
        
            
                ${hibernate.dialect}
                true
                                update
            
        
    


    
        
    


    <!-- ========================= BUSINESS OBJECT DEFINITIONS ========================= -->



    
        
    

    
        
        
        
            
                PROPAGATION_REQUIRED,readOnly
                PROPAGATION_REQUIRED,readOnly
                PROPAGATION_REQUIRED,readOnly
                PROPAGATION_REQUIRED
            
        
    

SpringHibernateDAOImpl extends HibernateDaoSupport and contains all our hibernate queries and updates. In code it is used by calling

WebApplicationContextUtils.getRequiredWebApplicationContext(httpRequest.getSession().getServletContext()).getBean("SpringHibernateDao");

वसंत कॉन्फ़िगरेशन इंगित करेगा कि प्रयुक्त डेटा स्रोत कॉमन्स से मूल डेटा स्रोत है, जो कनेक्शन पूलिंग का समर्थन करना चाहिए।

मुझे क्या देखना चाहिए इस पर कोई विचार?

[टिप्पणियों के लिए अद्यतन] अधिकतम सक्रिय कनेक्शन के लिए मैंने कॉन्फ़िगरेशन फ़ाइल को बदल दिया है

 <!--class="org.springframework.jdbc.datasource.DriverManagerDataSource">-->
    ${jdbc.driverClassName}
    ${jdbc.url}
    ${jdbc.username}
    ${jdbc.password}
    1

हालांकि इसने समस्या को ठीक नहीं किया।

हाइबरनेट 3.2.7.ga है और स्प्रिंग्स 2.5.6 है

कुछ ठेठ डीबी कोड होगा:

public void save(LikeRecord like){
    getHibernateTemplate().save(like);
}

public boolean existsUserWithEmail(String email){
    Criteria crit = getSession().createCriteria(Utente.class);
    crit.add(Restrictions.eq("email", email));
    Utente user = (Utente) crit.uniqueResult();
    if(user==null)return false;
    else return true;
}
public boolean existsUserWithUsername(String userName){
    Criteria crit = getSession().createCriteria(Utente.class);
    crit.add(Restrictions.eq("loginid", userName));
    Utente user = (Utente) crit.uniqueResult();
    if(user==null)return false;
    else return true;
}

लेनदेन और पूल मैनेजर के रूप में मैं इंप्रेशन के तहत था, इसे एप्लिकेशन कॉन्टेक्स्ट में परिभाषित वसंत बीन्स द्वारा हुड के तहत संभाला गया था, लेकिन मुझे इसके बारे में वास्तव में यकीन नहीं है।

0
एक प्रश्न अद्यतन में टिप्पणियों का जवाब दिया
जोड़ा लेखक Enoon, स्रोत
कौन सा वसंत संस्करण और हमें कुछ डेटाबेस कोड दिखाएं।
जोड़ा लेखक M. Deinum, स्रोत
समर्थन करता है, हां, हालांकि आप डिफ़ॉल्ट मान (8) मान रहे हैं ) स्वीकार्य हैं। आप अपने डेटाबेस की आवश्यकताओं से मेल खाने के लिए संख्या को कम करने का प्रयास कर सकते हैं।
जोड़ा लेखक Beau Grantham, स्रोत
आप लेनदेन का प्रबंधन कैसे करते हैं?
जोड़ा लेखक Olaf, स्रोत
साथ ही, क्या आप अपना कनेक्शन पूल कॉन्फ़िगरेशन दिखा सकते हैं?
जोड़ा लेखक Olaf, स्रोत