Как создать блок сопротивления JPA во время выполнения

Можно ли создать модуль персистентности jpa на лету во время выполнения, если он определен в файле persistance.xml?

У меня есть сценарий использования, когда я использую один экземпляр приложения для разных клиентов, для каждого клиента я устанавливаю новую базу данных, мне нужно настроить нового клиента без необходимости повторного развертывания приложения, поэтому мне нужно настроить блок персистентности во время выполнения, а не в файле persistence.xml

Я использую seam2, jsf1.2, hibernate3

Есть намеки на это?

2 ответа

Похоже, вы знаете, какие persistence unit использовать перед развертыванием. Если это так, то после создания PU во время выполнения вы не работаете. Я думаю, у вас есть два варианта.

  1. Вы можете просто использовать заполнитель, используя ${PUNAME} а затем в файле свойств установите его в соответствии с вашим клиентом. Если вы используете maven, у вас может быть профиль maven для заполнения этих свойств при разработке, а также при упаковке.
  2. Используйте какую-то систему на основе локали, имеют разные 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, чтобы увидеть, оно делает

Другие вопросы по тегам