我们将 EntityManager 注入到 Bean(位于服务层内部)中,如下所示:
@Inject
EntityManager entityManager
我们在 ManagedBean 内部使用这些服务(位于视图层内部)。一切正常。
当我们在 Stateless WebService 中注入这些服务时,就会出现问题。EntityManager 使用与上述代码相同的方式注入无状态 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 中使用相同的服务?