Как создать блок сопротивления JPA во время выполнения
Можно ли создать модуль персистентности jpa на лету во время выполнения, если он определен в файле persistance.xml?
У меня есть сценарий использования, когда я использую один экземпляр приложения для разных клиентов, для каждого клиента я устанавливаю новую базу данных, мне нужно настроить нового клиента без необходимости повторного развертывания приложения, поэтому мне нужно настроить блок персистентности во время выполнения, а не в файле persistence.xml
Я использую seam2, jsf1.2, hibernate3
Есть намеки на это?
2 ответа
Похоже, вы знаете, какие persistence unit
использовать перед развертыванием. Если это так, то после создания PU во время выполнения вы не работаете. Я думаю, у вас есть два варианта.
- Вы можете просто использовать заполнитель, используя
${PUNAME}
а затем в файле свойств установите его в соответствии с вашим клиентом. Если вы используете maven, у вас может быть профиль maven для заполнения этих свойств при разработке, а также при упаковке. - Используйте какую-то систему на основе локали, имеют разные
persistence unit
например, для каждого клиентаpersistenceunit_cient1.xml
а такжеpersistenceunit_cient2.xml
и пусть система выберет один в зависимости от локали клиента. Да, вам придется настроить локальные настройки.
хорошо.. просто уточняю, что я поняла. У вас есть запущенное приложение, где некоторые клиенты могут прийти и зарегистрироваться, и после регистрации у них будет собственная база данных. Я позволил своему воображению немного развлечься здесь:), но, похоже, это так. Что вы можете сделать, это изменить \ обновить файл свойств такими вещами, как URL-адрес подключения, пароль и т. Д. И фабрикой сессий реляции.
Этот вопрос может помочь вам в обновлении файла свойств во время выполнения.
Этот вопрос здесь и здесь содержит информацию о том, как перезагрузить фабрику сеансов во время выполнения.
Не является частью спецификации JPA. Некоторые реализации JPA допускают способ, например, то, что мы разрешаем в DataNucleus JPA, увидеть конец этого документа http://www.datanucleus.org/products/accessplatform_3_0/jpa/persistence_unit.html Обратитесь к документам своего провайдера JPA, чтобы увидеть, оно делает