Мы пытаемся построить систему, которая «производит» entitymanager в зависимости от вошедшего в систему пользователя (своего рода мультиарендность). Поэтому мы реализовали ejb без сохранения состояния следующим образом:
@Stateless
@TransactionAttribute(TransactionAttributeType.SUPPORTS)
public class CustomEntityManagerFactory {
@PersistenceContext(unitName = "EM1")
private EntityManager em1;
@PersistenceContext(unitName = "EM2")
private EntityManager em2;
@Produces
@RequestScoped
public EntityManager getEntityManager() {
// check which entitymanager to return
}
}
Entitymanager вводится следующим образом:
@Stateless
public class EmployeeService {
@Inject
private EntityManager em;
...
}
Этот производитель работает до тех пор, пока требуется только менеджер сущностей без расширенного контекста персистентности (в ejb без сохранения состояния). К сожалению, у нас также есть некоторые EJB с состоянием, которым нужен расширенный контекст персистентности. Есть ли способ реализовать производитель CDI для этой цели, или этот подход работает только для ejb без сохранения состояния с менеджером транзакций?