2

我们将 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 中使用相同的服务?

4

1 回答 1

2

没有可用于 Web 服务的对话范围,它已在 SO 上进行了相当多的介绍(现在不记得链接)。要么创建自己的范围,不管怎样,它都可以工作,或者向下移动到请求范围的 EM。

于 2013-05-21T16:41:16.537 回答