2012-04-27 135 views
1

我想处理一个登录的情况如下:从无状态Bean返回有状态的Java Bean?

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

我目前在做第二个步骤为:

return new StatefulBean(some params); 

这是做正确的方式?它似乎并不在我身上,因为我得到的例外:

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

当运行我的应用程序,我认为它涉及到描述的方法。

将SLJB的引用返回给客户端的正确方法是什么?

回答

3

首先,这是完全错误的:

new StatefulBean(some params) 

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

在你的场景中,我会反转这个流程:客户端连接到可能无状态会话bean的状态bean作为助手。不需要传递bean,客户端总是使用相同的bean。

+0

问题是这就是我的要求是如何制定的;有没有办法使用指定的工作流程? – adrianp 2012-04-27 18:27:43

+0

@adrianp也许你的要求应该不会被这样制定? – 2012-04-27 20:06:39

1

正如Tomasz所言,您可能需要重新思考您的流程。这就是说,通过使用我们在启动时分配给每个bean的可移植JNDI名称执行JNDI查找,您可以获得新的有状态实例。