【问题标题】:Stateful and stateless beans don't saves the state on Wildfly(only singleton saves)有状态和无状态 bean 不会在 Wildfly 上保存状态(仅单例保存)
【发布时间】:2016-02-16 09:47:58
【问题描述】:

我的 bean 中有一些实体的列表和两种方法:

  1. 在列表中添加新的实体实例
  2. 阅读列表。

jboss-as-7.1.11 上,有状态或无状态 bean 都可以正常工作。 但是,如果我在Wildfly 8 上部署了应用程序,则只有使用@Singleton 注释第二种方法会将集合返回到先前添加的元素。 似乎在为每个请求使用 @Stateful@Stateless 注释的情况下会创建一个新的 bean 实例。

我该如何解决? 如果重要的话,我会通过 RESTEasy 服务向 ejb 求助。

【问题讨论】:

  • 您需要更多地解释您的问题,他是否列出了您正在谈论的不同用户使用的列表,或者是添加实体的同一用户也尝试从列表中读取?
  • 同一台电脑上的同一个用户。
  • 这很奇怪,因为在 @Stateless 的情况下,您必须没有状态,所以您的 Wildfly 行为是正确的。因此,在我看来,您对 SFSB 的行为是正确的,而对于 JBOSS 的 SLSB 行为却是错误的,而 Wildfly 的行为则完全相反!

标签: java jboss ejb wildfly ejb-3.1


【解决方案1】:

我怀疑 JBoss 使用无状态会话 bean 池,这意味着您“幸运”了它的工作原理。如果添加多个并发客户端,我怀疑 JBoss 也会失败。如果跨请求和客户端维护状态很重要,您应该使用单例会话 bean。

【讨论】:

  • 好吧,但是'statefull'呢?
  • 根据 JAX-RS 2.0 规范的第 8.3 节(“EJB 资源类”),“[...] 支持 EJB 的产品还必须支持使用无状态和单例会话 bean 作为根资源课”。规范没有提到有状态,所以它不是规范定义的行为,而且我对 JBoss 不够熟悉,无法解释在这种情况下发生了什么。
  • 我最好的猜测是它完全忽略了有状态注解,所以它回退到默认行为(好像你根本没有 EJB 组件定义注解),即为每个请求。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-23
  • 2018-09-03
  • 1970-01-01
相关资源
最近更新 更多