У меня возникла проблема с подключением пула pax-jdbc в karaf, я пытаюсь вставить Mysql DataSource (DS) через blueprint.xml в мой проект , для проверки его, я создал команду karaf, где вводит DS в командный класс karaf и выполняет запрос с этим соединением. Что все в порядке, но проблема в том, что когда я выполняю команду много раз, для при каждом выполнении создается новый экземпляр DS и соединение пула не может открыть новые подключения к MySQL, потому что пул достиг предела.karaf + pax-jdbc пул соединений достиг предельного значения
Я загрузил свой код в github по этой ссылке: https://github.com/christmo/karaf-pax-jdbc, вы можете получить запрос на выталкивание , если вы нашли ошибку в этом проекте.
Для тестирования этого проекта вы можете сделать:
1. Download karaf 4.0.4 or apache-karaf-4.1.0-SNAPSHOT
2. Copy the file karaf-pax-jdbc/etc/org.ops4j.datasource-my-ds.cfg to ${karaf}/etc, this file have the mysql
configuration change with your mysql configuration data.
4. Start mysql database engine
3. Start karaf -> cd ${karaf}/bin/; ./karaf
4. Add the repo of this project with this karaf command: feature:repo-add mvn:pax/features/1.0-SNAPSHOT/xml/features
5. Install the feature created for this project: feature:install mysql-test
6. Execute the command for test this problem: mysql-connection, this command only execute "Select 1" in mysql
Если выполнить 9 раз эта команда «MySQL-соединение», он замерзнет подсказке karaf и если вы прервать выполнение вы можете получить это исключение:
java.sql.SQLException: не удается получить соединение, общая ошибка при org.apache.commons.dbcp2.PoolingDataSource.getConnection (PoolingDataSource.java:146) в com.twim.OrmCommand.execute (OrmCommand.java:53) в org.apache.karaf.shell.impl.action.command.ActionCommand.execute (ActionCommand.java:83) at org.apache.karaf.shell.impl.console.osgi.secured.SecuredCommand.execute (SecuredCommand. java: 67) at org.apache.karaf.shell.impl.console.osgi.secured.SecuredCommand.execute (SecuredCommand.java:87) at org.apache.felix.gogo.runtime.Closure.executeCmd (Закрытие .java: 480) at org.apache.felix.gogo.runtime.Closure.executeStatement (Closure.java:406) at org.apache.felix.gogo.runtime.Pipe.run (Pipe.java:108) на org.apache.felix.gogo.runtime.Closure.execute (Closure.java:182) на org.apache.felix.gogo.runtime.Closure.execute (Closure.java:119) на org.apache.felix.gogo.runtime.CommandSessionImpl.execute (CommandSessionImpl.java:94) на org.apache.karaf.shell.impl.console.ConsoleSessionImpl.run (ConsoleSessionImpl.java:270) на Java. lang.Thread.run (Thread.java:745) Вызванный: java.lang.InterruptedException на java.util.concurrent.locks.AbstractQueuedSynchronizer $ ConditionObject.reportInterruptAfterWait (AbstractQueuedSynchronizer.java:2014) на java.util. concurrent.locks.AbstractQueuedSynchronizer $ ConditionObject.await (AbstractQueuedSynchronizer.java:2048) на org.apache.commons.pool2.impl.LinkedBlockingDeque.takeFirst (LinkedBlockingDeque.java:583) в org.apache.commons.po ol2.impl.GenericObjectPool.borrowObject (GenericObjectPool.java:442) на org.apache.commons.pool2.impl.GenericObjectPool.borrowObject (GenericObjectPool.java:363) на org.apache.commons.dbcp2.PoolingDataSource. GetConnection (PoolingDataSource.java:134) ... 12 более
Ничего себе! @ christian-schneider, я не могу поверить, что это была моя проблема. :) – christmo