2012-04-10 1 views
3

Мое веб-приложение (для развертывания на tomcat) потребовало встроенной базы данных для хранения временных пользовательских данных для более быстрого поиска. Я выбрал Apache Embedded Derby, потому что он легко встраивается в веб-приложение и является чистой Java-БД.Проблема с множественными соединениями с встроенным дерби

Я также реализовал объединение пулов для извлечения соединений. Здесь я столкнулся с двумя критическими проблемами (show stopper). Во-первых, Мое приложение не может одновременно иметь более двух активных подключений. Итак, мое приложение просто зависает.

Во-вторых, я продолжаю получать еще одно приложение, уже загрузившее базу данных. Я подозреваю, что это происходит, когда одно соединение уже активно, и я пытаюсь извлечь другое соединение из пула.

Я читал, что встроенное дерби db может иметь только одно соединение одновременно, то как оно поддерживает объединение пулов через EmbeddedConnectionPoolDataSource.

Должен ли я запускать db в режиме сетевого дерби или встроенного сервера? Мне не нравится идея сетевого режима, потому что мне нужно более быстрое извлечение. Тогда я предпочел бы использовать MySQL. И если я запустил db во встроенном режиме сервера db, будет ли он поддерживать объединение пула и по крайней мере 50 одновременных подключений или Должен ли я просто заменить derby другой встроенной базой данных, такой как H2 или HSQL, поскольку я прочитал, что дерби предназначено для обучения только и не должны использоваться в производственной среде? Просьба помочь

+1

Derby, безусловно, используется во многих производственных средах, и Derby, безусловно, поддерживает множество одновременных соединений. Непонятно, какой именно вопрос вы спрашиваете, и какую помощь вы желаете. Конфигурация сетевого сервера очень быстрая; Я определенно нашел его достаточно быстрым для моего использования. –

+1

Я использую дерби во встроенном режиме. Мой вопрос заключается в том, поддерживает ли он параллельные соединения во встроенном режиме. Для одного активного соединения другой метод getConnection() вызывает следующую ошибку: «Еще один экземпляр Derby, возможно, уже загрузил базу данных». – user748316

+0

У меня есть два варианта: либо переключиться в режим сети/сервера, либо в режиме встроенного сервера, либо в новую базу данных. Мое основное требование - объединение пулов, чтобы поддерживать параллельные соединения и ускоренное извлечение (встроенный db), чтобы я не запрашивал в сети. Пожалуйста, помогите – user748316

ответ

2

Я реализовал пул соединений с Apache commons dbcp и работает отлично, и это тоже во встроенном режиме.