Инициализация пулов c3p0 с различными источниками данных - PullRequest
2 голосов
/ 07 февраля 2011

, Добрый день всем!

У меня было требование использовать несколько баз данных в приложении.В весеннем конфигурационном файле я настраиваю два источника данных каждый для отдельной базы данных.

<bean id="myDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">someproperties here<bean/>
<bean id="myDataSource2" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">someproperties here<bean/>

<bean id="mySessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
        <property name="dataSource" ref="myDataSource" /> 

<bean id="mySessionFactory2" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
        <property name="dataSource2" ref="myDataSource2" /> 

Итак, я настроил все источники данных, а затем написал простой тест для проверки загрузки контекста приложения Spring.Я запускаю этот тест, и он выполняется ужасно долго (110 секунд).В журналах видно, что пулы инициализируются 4 раза.

INFO: Initializing c3p0 pool... com.mchange.v2.c3p0.ComboPooledDataSource [parameters...

Пытался удалить источник данных - теперь в файле журнала есть инициализация 2 пулов, первая инициализация заняла 4-6 секунд, вторая примерно 30-32...

Может ли кто-нибудь дать мне подсказку, как я могу решить эту проблему производительности?

PS Mysql db 5.1, c3p0 версия 0.9.1.2 (я тоже пробовал 0.9.2), Spring 3.0.4, Hibernate 3.6

РЕДАКТИРОВАТЬ: я обнаружил, что в моем тесте - контекст приложения былзапускается 2 раза, поэтому я полагаю, что именно по этой причине пулы инициализировались 4 раза вместо 2, но все же у меня есть пул проблем с производительностью для первого источника данных, инициализированный за 8 секунд, но пул для второго времени инициализации источника данных составляет 30-32 секунды....

...