2013-12-24 2 views
1

У меня есть две бобы: один управляет одним запасом, другие управляют движениями между двумя запасами. Так, в MovStock боба у меня есть:Почему я не могу вводить несколько экземпляров компонента?

@EJB 
private Stock stock1; 
@EJB 
private Stock stock2; 

[...] 

public void setStocks(int idStock1, int idStock2) { 
    stock1.loadStock(idStock1); 
    stock2.loadStock(idStock2); 
} 

где-то в моем коде, на другом компоненте, я:

@EJB 
private MovStock movStock; 

[...] 

movStock.setStocks(10,20); 

но это приводит к stock1 и stock2 держать тот же запас (20) , Конечно, я делаю что-то неправильно, но каков правильный способ использования нескольких экземпляров одного и того же компонента, которые используют @PersistenceContext и т. Д.?

спасибо

+0

Возможно, потому, что инъецируемый экземпляр одинаковый для обоих 'Stock', вам нужен какой-то определитель, чтобы ввести два разных экземпляра –

+0

да, но какой квалификатор? Я застрял. –

ответ

2

Фасоль управляется контейнерами. Поэтому вам не нужно беспокоиться о случаях. Контейнер будет создавать новые, когда это необходимо, но будет иметь такое же состояние (если Statefull). Похоже, что Stock не должен быть Enterprise Bean, а DTO. Вы не должны выполнять операции с данными в EJB. EJB должен выполнять его на соответствующих структурах (DTO).

+0

ммм, может быть, я не понимаю в своем вопросе. Фондом является боб, который поддерживает логику управления запасом (т. Е. Добавляет, под), а MovStock - это компонент, который поддерживает логику управления движением (перемещение 10 из запаса1 в сток2), поэтому в MovStock мне нужно использовать запас бобы (движение использует сущность Movement, таблицу jpa и два запаса, для добавления и подвычисления в отдельности). –

+0

Для выполнения операций над объектами мы используем Dao (объекты доступа к данным). Дао может быть EJB. Но для хранения данных вы должны создать DTO. То, что DTO не управляется контейнером, поэтому вы можете иметь несколько нестандартных экземпляров. «Фондовый - это боб, который придерживается логики управления запасом» - это правильно, но акции не должны содержать акции. Это должен быть другой объект, а не EJB. – MGorgon

+0

, так что, если я понимаю, мне нужны две бобы (логика акций и movstock), две сущности (которые привязаны к столу и таблице movstock) и различные DTO, а в Stock bean я не могу использовать, например, это. idStock, но мне нужно управлять двумя DTO в моем MovStock и передавать его в компонент «Блочные»? Таким образом, невозможно иметь запас, содержащий логику и «текущий» запас? –

Смежные вопросы