2013-05-18 2 views
2

У меня есть приложение Java Swing, которое включает библиотеку c3p0 для управления пулами соединений. В своей конфигурации я установил свойство c3p0.maxPoolSize = 10, но он все еще создает больше подключений после входа пользователя в систему.Приложение C3P0 и Java Swing

c3p0.acquireIncrement=1 
c3p0.minPoolSize=1 
c3p0.maxPoolSize=10 
c3p0.maxIdleTime=300 

HOw Могу ли я контролировать это поведение?

Вот мой конфиг базы данных Spring XML

<context:property-placeholder 
    location="main/resources/properties/database.properties" /> 
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" 
    destroy-method="close"> 
    <property name="driverClass" value="${jdbc.driverClassName}" /> 
    <property name="jdbcUrl" value="${jdbc.url}" /> 
    <property name="user" value="${jdbc.username}" /> 
    <property name="password" value="${jdbc.password}" /> 
    <!-- these are C3P0 properties --> 
    <property name="acquireIncrement" value="${c3p0.acquireIncrement}" /> 
    <property name="minPoolSize" value="${c3p0.minPoolSize}" /> 
    <property name="maxPoolSize" value="${c3p0.maxPoolSize}" /> 
    <property name="maxIdleTime" value="${c3p0.maxIdleTime}" /> 
</bean> 

боб генерируется Хорошо, но я не могу контролировать это событие: , когда пользователь входит в систему в системе C3P0 автоматически открывает еще три соединения. Что нам нужно, - (1) «Расскажите» c3p0 через конфигурационный файл XML, который мы хотим только для подключения к db на пользователя и (2) c3p0, пожалуйста, контролируйте количество общих подключений к базе данных, установив количество подключений до 10. ..

Пожалуйста, если я не понимаю, скажите, пожалуйста.

+0

Вы должны предоставить гораздо больше информации, чем это. когда вы настраиваете конфигурацию, куда вы ее положили? он «взял», то есть, когда ваш пул c3p0 инициализирован, имеют ли параметры ожидаемые значения? (запустите приложение swing из командной строки и посмотрите, что заносится в журнал, возможно, к стандартной ошибке. Конфигурация c3p0 будет сброшена при запуске пула). как вы управляете аутентификацией? обратите внимание, что настройки c3p0 основаны на аутентификации. если есть более одного пользователя db, будет более одного пула. getIncrement = 1 плохо. попробуйте как минимум 3. –

+0

@SteveWaldman Я использую Spring в качестве рамки. Свойства, показанные в моем, помещены в файл .properties и переданы в XML для генерации моего компонента весной – MigRome

+0

. Моя проблема: я установил maxpoolSize = 10, почему c3p0 не соблюдает этот параметр и все же он создает еще три подключения для каждого пользователя который входит в мою систему ... пожалуйста, любые вопросы или помощь хорошо приняты. – MigRome

ответ

0

Я суммировать комментарии выше:

  • C3P0 (и любой пул соединений) используется для управления количеством соединений клиента
  • Если вы хотите ограничить подключения к серверу, к нему с конфигурацией сервера БД (например, для MySQL это max_connection)
  • Вы все равно можете поддерживать пул соединений на клиенте, чтобы оптимизировать производительность на стороне клиента - то есть не открывать новое соединение каждый раз, когда это необходимо.
  • Вы должны ограничить соединения на стороне сервера, только если возникла проблема. Вы рискуете, что клиенты ждут подключения (или, что еще хуже, получают ошибки «Слишком много соединений») и не могут использовать ваше программное обеспечение.
Смежные вопросы