Мы внедряем EntityManager в Bean (расположенный внутри Service Layer), как показано ниже:
@Inject
EntityManager entityManager
И мы используем эти сервисы внутри ManagedBean (расположенного внутри уровня представления). Все работает нормально.
Проблема возникает, когда мы внедряем эти сервисы внутрь Stateless WebService. EntityManager внедряется в Stateless WebService таким же образом с приведенным выше кодом. Поскольку мой entityManager имеет ConversationScoped, мы получаем следующую ошибку:
org.jboss.weld.context.ContextNotActiveException: WELD-001303 No active contexts for scope type javax.enterprise.context.ConversationScoped
at org.jboss.weld.manager.BeanManagerImpl.getContext(BeanManagerImpl.java:598) [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31]
at org.jboss.weld.bean.proxy.ContextBeanInstance.getInstance(ContextBeanInstance.java:71) [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31]
at org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(ProxyMethodHandler.java:104) [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31]
Как мы можем решить эту проблему? Как мы можем использовать одни и те же сервисы как внутри View Layer, так и WebServices Layer?