Я занимаюсь разработкой приложения SaaS с использованием JavaEE технологий ( JPA, EJB, .. )
для мультитенюса, я выбрал подход «Общая база данных, отдельные схемы» и спроектировал БД ( PostgreSQL ) таким образом
В основном мне нужно изменить схему по умолчанию для пользовательских сеансов в приложении, чтобы пользователи могли получать свои собственные данные из правильной схемы
моя бизнес-логика реализована с помощью EJB (Управляемый контейнером) , а сервер приложений - glassfishv3
поэтому в моих EJB я просто добавляю EntityManager вот так
@PersistenceContext(unitName="DBNAME")
private EntityManager em;
и оставление управления транзакциями стеклянной рыбе
я пытался написать @ PostConstruct обратные вызовы для EJB без сохранения состояния, внедряющих DataSource
но getClientInfo () как-то возвращает null, поэтому я даже не вижу схему по умолчанию. Причина, по которой я ввел DataSource, заключалась в том, что я подумал, что нужно сделать некоторые вещи низкого уровня, чтобы указать схему.
я знаю, что если я управляю транзакциями в приложении, а не оставляю их на сервере приложений, я могу легко изменять значения EntityManager через EMF, но я хочу сохранить инфраструктуру, управляемую контейнером, и просто изменить некоторые значения во время выполнения
Есть ли способ сделать это с SessionContext или что-нибудь еще?
как лучше всего решить эту проблему?
заранее спасибо