1

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

  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 的引用的正确方法是什么?

4

2 回答 2

3

首先,这是完全错误的:

new StatefulBean(some params)

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

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

于 2012-04-27T18:24:14.250 回答
1

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

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

于 2012-04-27T20:10:54.173 回答