【问题标题】:How to use ConversationScoped EntityManager inside StatelessBean如何在 StatelessBean 中使用 ConversationScoped EntityManager
【发布时间】:2013-05-15 21:36:11
【问题描述】:

我们将 EntityManager 注入到 Bean(位于服务层内部)中,如下所示:

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

【问题讨论】:

    标签: java cdi ejb-3.1 seam3


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-07
      • 1970-01-01
      • 2011-12-26
      相关资源
      最近更新 更多