Моя проблема заключается в том, что я не могу вводить несколько экземпляров шаблонов из GenericManagerJPA <>. То есть, в этом коде как projectManager, так и userManager будут содержать тот же экземпляр GenericManagerJPA<User>
. Я не знаю, почему ...CDI: вводят два генератора из одного шаблона
@Stateless
public class UserFacadeJPA implements Serializable {
@Inject private GenericManagerJPA<Project> projectManager;
@Inject private GenericManagerJPA<User> userManager;
@PostConstruct
public void init() {
projectManager.setEntityClass(Project.class);
userManager.setEntityClass(User.class);
}
....
Из этого класса:
@Dependent
@Stateless
public class GenericManagerJPA<T> implements Serializable {
...
Как я могу вводить Differents экземпляры родового объекта с CDI? Можете ли вы мне помочь в этом вопросе? Большое спасибо.
PS: Я прочитал эту тему (https://community.jboss.org/blogs/scott.stark/2012/08/21/a-generic-producer-method), которая представляет, как ее создать (я думаю), но я предполагаю, что это немного сложно понять для меня. Поэтому, если у вас есть другое решение или вы можете объяснить мне принцип более четко ...
Чтобы уточнить немного дальше. Одна из проблем заключается в том, что вы создаете только одну созданную EJB-ссылку. CDI просто ищет эту ссылку и вводит ее в поле. С чистыми CDI-компонентами вы получите две разные точки впрыска (так как они не передают содержимое контейнера EJB, чтобы найти экземпляр). –
ОК, я немного понимаю, что вы имеете в виду, но как я могу сохранить аннотацию Stateless, потому что здесь мой класс становится сдержанным, не так ли? И это не работает без аннотации '@ New' между' @ Inject' и private ... Это создает проблему производительности ... Есть ли хороший способ сделать это. Во всех случаях, спасибо много! – christophedebatz
Проблема с EJB (а не со статусом без состояния, с учетом состояния, singleton) заключается в том, что они не имеют дело с дженериками, все это хорошо с точки зрения спецификации. Они используют интерфейсы для привязки. В CDI, чтобы использовать дженерики, вы должны быть зависимыми. –