Внедрить сессионный компонент в сущность - PullRequest
2 голосов
/ 15 ноября 2011

Я пишу приложение JEE6, используя EJB3.1, CDI и шаблон постоянных объектов домена.В некоторых случаях мне нужно иметь экземпляр сессионного компонента внутри объекта (jpa2.0).Инъекция с помощью @Inject или @EJB не работает.это всегда нулевая ссылка.

Единственным возможным решением было сделать поиск через InitialContext.Но это действительно плохо.Кто-нибудь знает решение, как получить доступ к сессионному компоненту из сущности?

Я читал о фабрике сессионных компонентов без сохранения состояния, но не смог найти ни одного примера.

1 Ответ

1 голос
/ 15 ноября 2011

Объекты создаются вами, и если вы хотите, чтобы в них вводились бины, они должны создаваться контейнером.

Технически, вы можете управлять своими сущностями с помощью контейнера CDI, и вместо new YourEntity используйте @Inject @New YourEntity entity. Но это немного нелогично. Я не пробовал это.

Это часть более широкого обсуждения анемичной модели данных по сравнению с проектированием, управляемым доменом. То есть должны ли ваши объекты быть держателями данных без какого-либо поведения, или они также должны иметь логику (и скрывать свое состояние)

...