java - 如何在 StatelessBean 中使用 ConversationScoped EntityManager

标签 java cdi ejb-3.1 seam3

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

@Inject

EntityManager entityManager

我们在 ManagedBean 中使用这些服务(位于 View 层内部)。一切正常。

当我们将这些服务注入(inject)到 Stateless WebService 中时,就会出现问题。使用与上述代码相同的方式将 EntityManager 注入(inject)到 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 层和 Web 服务层中使用相同的服务?

最佳答案

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

关于java - 如何在 StatelessBean 中使用 ConversationScoped EntityManager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16664581/

相关文章:

java异常处理这里粘贴的两种样式有什么区别?

java - IntelliJ spring boot 项目中有很多损坏的源代码和类路径错误?

java - 我可以使用 lambda 表达式通过 CDI 的策略模式动态获取 ejb 吗?

java - 可以在运行时为 @Schedule 注释更改 ejb 参数吗?

java - 如何让 nextLine() 等待用户的输入?

java - 没有 setter getter 的 struts 2 Action

java - @生产者的 CDI @inject 失败

java - @Transactional 方法在异常和多线程 Wildfly CDI 上插入值

dependency-injection - 我可以在 quartz 调度程序作业中使用 CDI 注入(inject)吗?

java - 启动单例 bean 可以延迟 J2EE 容器初始化吗?