【问题标题】:Returning a Stateful Java Bean from a Stateless Bean?从无状态 Bean 返回有状态 Java Bean?
【发布时间】:2012-04-28 04:10:54
【问题描述】:

我想按如下方式处理登录场景:

  1. 客户端连接到无状态 Java Bean (SLJB) 并尝试登录;
  2. 如果登录成功,SLJB 会向用户返回一个 Stateful Java Bean (SFJB),以便客户端可以继续使用应用程序。

我目前正在做第二步:

return new StatefulBean(some params);

这是正确的做法吗?当我得到异常时,我似乎没有:

Class org.eclipse.persistence.internal.jpa.EntityManagerImpl is not Serializable

在运行我的应用程序时,我认为它与描述的方法有关。

从 SLJB 向客户端返回对 SFJB 的引用的正确方法是什么?

【问题讨论】:

    标签: java jakarta-ee ejb javabeans


    【解决方案1】:

    首先,这是完全错误的:

    new StatefulBean(some params)
    

    EJB 容器负责创建和销毁 bean 的实例,你不应该手动创建它们。

    在您的场景中,我将反转流程:客户端连接到有状态 bean,它可能作为帮助程序无状态会话 bean。无需传递 bean,客户端始终使用相同的 bean。

    【讨论】:

    • 问题是我的要求是这样制定的;有没有办法使用指定的工作流程?
    • @adrianp 也许您的要求不应该这样表述?
    【解决方案2】:

    正如 Tomasz 所说,您可能需要重新考虑您的流程。

    也就是说,您可以通过使用我们在启动时分配给每个 bean 的可移植 JNDI 名称进行 JNDI 查找来获取新的有状态实例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-29
      • 2011-08-14
      • 2015-05-09
      相关资源
      最近更新 更多