سؤال

  <property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>

            <property name="c3p0.max_size">100</property>
    <property name="c3p0.idleConnectionTestPeriod">300</property>
    <property name="c3p0.acquire_increment">1</property> 
    <property name="c3p0.idle_test_period">100</property> <!-- seconds --> 
    <property name="c3p0.max_statements">0</property> 
    <property name="c3p0.min_size">10</property> 
    <property name="c3p0.timeout">100</property> <!-- seconds --> 

وهذا هو التكوين في hibernate.cfg.xml. أنا أستخدم السبات 3.2.5 وc3p0 0.9. أنا لا أعرف ما فاتني في هذا التكوين. بعد قليل الطلب، تظهر اتصال صلت الحد الأقصى لحجم التجمع والانتظار لتحرير الموارد. إذا كنت تستخدم دون تكوين تجمع الاتصالات في آلة المحلية، وانها لن تظهر أي رسالة خطأ. الرجاء مساعدتي لمعرفة الجزء المفقود.

هل كانت مفيدة؟

المحلول

ولي باستخدام التكوين بعد أنها تعمل دون مشاكل في اختبارات المدى الطويل: (تم تكوين بلدي مصدر البيانات بحلول الربيع، ولكن يمكنك مشاهدة خصائص لc3p0 على أي حال)

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> 
    <property name="driverClass" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" />
    <property name="jdbcUrl" value="${database.url}" />
    <property name="user" value="${database.login}" />
    <property name="password" value="${database.password}" />
    <property name="minPoolSize" value="3" />
    <property name="maxPoolSize" value="100" />
    <property name="maxStatements" value="1100" />
    <property name="maxStatementsPerConnection" value="120" />      
    <property name="checkoutTimeout" value="5000" />
    <property name="idleConnectionTestPeriod" value="60" />
</bean>

ولكن اعتقد ان المشكلة ليست في التكوين. وأفترض أن يتم إرجاع ليس كافة الاتصالات إلى تجمع وهكذا يعمل بركة جافة بعد مرور بعض الوقت.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top