我们将EntityManager注入Bean(位于服务层内),如下所示:
@Inject
EntityManager entityManager
我们在ManagedBean(位于视图层内)中使用这些服务。一切正常。
当我们在Stateless WebService中注入这些服务时会出现问题。使用与上述代码相同的方式在无状态WebService中注入EntityManager。由于我的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中使用相同的服务?
答案 0 :(得分:2)
Web服务没有可用的会话范围,它在SO上已经有很多内容(现在不记得链接)。创建自己的范围,无论如何都可以使用,或者向下移动到Request Scoped EM。