Встроенная проблема с несколькими соединениями в дерби

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

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

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

Я читал, что встроенная база данных derby может иметь только одно соединение за раз, тогда как она поддерживает пул соединений через EmbeddedConnectionPoolDataSource.

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


person user748316    schedule 10.04.2012    source источник
comment
Derby, безусловно, развернут во многих производственных средах, и Derby, безусловно, поддерживает множество одновременных подключений. Непонятно, какой именно вопрос вы задаете и какой помощи вы желаете. Конфигурация сетевого сервера выполняется очень быстро; Я, конечно, нашел его достаточно быстрым для моего использования.   -  person Bryan Pendleton    schedule 11.04.2012
comment
Я запускаю дерби во встроенном режиме. Мой вопрос заключается в том, поддерживает ли он одновременные соединения во встроенном режиме. Для одного активного соединения другой метод getConnection() вызывает следующую ошибку: Возможно, другой экземпляр Derby уже загрузил базу данных.   -  person user748316    schedule 11.04.2012
comment
Теперь у меня есть два варианта: либо я переключаюсь в режим сети/сервера, либо в режим встроенного сервера, либо вообще на новую базу данных. Моим основным требованием является объединение пулов соединений, чтобы поддерживать одновременные соединения и более быстрое извлечение (встроенная база данных), чтобы я не выполнял запросы в сети. Пожалуйста помогите   -  person user748316    schedule 11.04.2012
comment
Два вызова getConnection() должны быть из одной и той же JVM, а точнее, из одного и того же загрузчика классов в одной и той же JVM. Это распространенная путаница при создании веб-приложений, поскольку серверы приложений часто используют отдельные загрузчики классов для каждого веб-приложения. Почему бы вам не попробовать какое-то время использовать сетевой сервер, пока вы не освоитесь с Derby?   -  person Bryan Pendleton    schedule 11.04.2012


Ответы (1)


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

person user748316    schedule 13.04.2012